我认为变量应该不在循环中,所以只定义一次变量。
像,
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
});
如果创建多个新实例,它不会花费任何费用吗?
答案 0 :(得分:1)
只有你在循环之外做一些事情才真正重要。
target
意味着在循环执行完后,循环命中的最后一个$('input[name=' + ele + ']')
元素仍将分配给您的target
变量。target
意味着target
将在循环之外未定义。答案 1 :(得分:0)
foreach
的行为都不同。forEach
为数组中的每个项目创建新的scope
(功能级)..
对于全局变量,它将覆盖每次迭代的值。对于本地,它将为每个项创建新实例。
如果click events
中正在处理任何forEach
,global
变量,则会覆盖最后一项,因为值会被覆盖。
答案 2 :(得分:0)
它不仅仅是一个循环,它是在循环内调用的函数。
每个功能都有自己的范围。
在第一个示例中,target对于包含此forEach循环的函数是可见的,在第二个示例中,target仅在此函数内可见。