有什么区别:
function bar()
{
for (x=0; x< 100; x++) {}
}
Run Code Online (Sandbox Code Playgroud)
和
function bar()
{
var x;
for (x=0; x< 100; x++) {}
}
Run Code Online (Sandbox Code Playgroud)
如果x没有在该函数之外声明,那么它不是全局变量?我总是这么想,因为我通常不会声明仅在循环中使用的一次性变量,但我想知道这是否会破坏浏览器中的可比性等.
cob*_*bal 34
第一个例子将添加或修改全局变量x,如果不是所需的结果,通常要避免这种情况.
虽然你的第二个例子是按照需要工作的(没有副作用),但在我看来,这个替代方案看起来会更好
function bar()
{
for (var x=0; x< 100; x++) {}
}
Run Code Online (Sandbox Code Playgroud)
Nor*_*rtl 16
在声明/使用变量时会创建变量.如果省略var关键字,则在全局范围内自动创建变量.所以你会产生副作用.通常要避免这种情况.
假设您使用全局变量,然后您选择了该软件的其他部分已经采用的变量名称.这将导致一些代码覆盖其值的情况.这会产生错误,并且大部分时间都难以调试.在您的示例中,您可能会覆盖另一个软件正在使用的全局变量x.
使用var也更快.如果访问全局变量,则必须扫描所有范围,直到变量名称的全局范围.通过使用var,它绑定到您的本地范围.
最好使用always use var.或者更好:为变量选择最窄的范围总是好的.现在你有全局和var.无论您在何处声明,都可以在整个函数中看到var声明.在javascript 1.7中引入了新关键字:let.让我们进一步缩小范围.如果你声明你的for循环
for(let x = 0; x < 100; i++) {}
Run Code Online (Sandbox Code Playgroud)
比x仅在{}块内可见.
| 归档时间: |
|
| 查看次数: |
21824 次 |
| 最近记录: |