这似乎是一个简单的问题,但我无法找到答案..
例如,如果我有以下对象:
var a = {
foo : "FOO",
bar : "BAR"
}
现在,如果我要列出objec的属性,我应该执行以下操作:
for( var b in a ) {
// do something
}
或者,我可以这样做:
for( b in a ) {
// do something
}
但是,这些方法之间的区别是什么?为什么要使用“var”或为什么不在循环中使用“var”?
答案 0 :(得分:7)
如果使用之前未声明的变量而不预先添加var
,则创建一个全局变量。
function scope() {
a = "hi"; // global
var b = "ho"; // local
}
然而,
之间没有区别for (var b in a) { /* .. */ }
和
var b;
for (b in a) { /* .. */ }
答案 1 :(得分:3)
如果没有var,b
将变为全局,然后能够与b
的另一个定义进行交互,这可能导致错误或意外行为。
例如,
function example1(){
for( b in a ){
example2();
//now when b comes back, it will reference the last item from example2,
//essentially skipping the entire interior of a.
}
}
function example2(){
for( b in a ){
//access a[b]
}
}
答案 2 :(得分:1)
如果你没有输入var
,你会声明一个全局变量,所以如果你以后打算不打算使用它就没有意义,你就会消耗内存而不需要它< / p>