在循环范围中定义变量还是应该超出范围?

时间:2016-02-29 10:34:07

标签: javascript

我认为变量应该不在循环中,所以只定义一次变量。

像,

var target;
elementsArray.forEach(function(ele) {
    target = $('input[name=' + ele + ']');
    // do something with target
});

但是,我读了一些JS编码建议,说,变量应该在范围内定义。

那么我应该这样使用吗? ,

elementsArray.forEach(function(ele) {
    var target = $('input[name=' + ele + ']');
    // do something with target
});

如果创建多个新实例,它不会花费任何费用吗?

3 个答案:

答案 0 :(得分:1)

只有你在循环之外做一些事情才真正重要。

  1. 在循环外定义target意味着在循环执行完后,循环命中的最后一个$('input[name=' + ele + ']')元素仍将分配给您的target变量。
  2. 在循环内定义target意味着target将在循环之外未定义

答案 1 :(得分:0)

  

foreach的行为都不同。 forEach为数组中的每个项目创建新的scope功能级)..

对于全局变量,它将覆盖每次迭代的值。对于本地,它将为每个项创建新实例。

如果click events中正在处理任何forEachglobal变量,则会覆盖最后一项,因为值会被覆盖。

答案 2 :(得分:0)

两者都不是一样的

它不仅仅是一个循环,它是在循环内调用的函数。

每个功能都有自己的范围。

在第一个示例中,target对于包含此forEach循环的函数是可见的,在第二个示例中,target仅在此函数内可见。

相关问题