为什么要在内部使用“var”进行循环?

时间:2012-08-13 08:58:30

标签: javascript for-loop

这似乎是一个简单的问题,但我无法找到答案..

例如,如果我有以下对象:

  var a = {
    foo : "FOO",
    bar : "BAR"
  }

现在,如果我要列出objec的属性,我应该执行以下操作:

  for( var b in a ) {
    // do something
  }

或者,我可以这样做:

  for( b in a ) {
    // do something
  }

但是,这些方法之间的区别是什么?为什么要使用“var”或为什么不在循环中使用“var”?

3 个答案:

答案 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>