JavaScript:for语句中的变量赋值在...之前或之内

时间:2012-08-07 19:15:17

标签: javascript

我在for语句中或之前看到了两个....变量声明。哪个更好?这是一个示例代码段。

MC.initAll = function() {
    var iterate = [MC, Su], 
        l = iterate.length, 
        i, 
        key;
    for( i = 0; i < l; i++ ) {
        for( key in iterate[i]) {
            if( iterate[i].hasOwnProperty(key) && iterate[i][key].hasOwnProperty("init") ) {
                iterate[i][key].init();
            }
        }
    }
}

在for语句之外置于函数顶部的优点:

  • 由于使用相同的var语句而导致代码减少
  • 已经悬挂,js没有
  • 内部工作更明确
  • 将通过jshint.com

加入for语句的优点

  • 在功能
  • 中进行简单的目视检查以验证声明

2 个答案:

答案 0 :(得分:3)

这是个人风格。哪个“更好”纯粹是一个意见问题。无论var语句出现在何处,javascript解释器都会将所有变量定义提升到变量块的开头。

我个人喜欢将我的var放在for循环中,这样就不会出现意外遗忘和使用隐式全局变量,但这只是个人风格的选择。我知道其他人喜欢在函数开始时明确声明的所有变量。

答案 1 :(得分:1)

我在for循环中对它进行声明之前声明我的变量

var i, j; 
for (i = 0, j = x.length; i < j; i = i+1){
     the loop ... 
}

这样我只通过我的代码一次声明我的计数器并随意重置它。 如果我需要保持计数器值,我声明另一个值,我把我的计数器值