Javascript 定义循环范围内的变量还是应该超出范围?
我认为变量应该在循环之外,这样就可以只定义一次变量 像 但是,我读了一些JS编码建议,也就是说,变量应该在范围中定义 那么我应该这样使用吗Javascript 定义循环范围内的变量还是应该超出范围?,javascript,Javascript,我认为变量应该在循环之外,这样就可以只定义一次变量 像 但是,我读了一些JS编码建议,也就是说,变量应该在范围中定义 那么我应该这样使用吗 elementsArray.forEach(function(ele) { var target = $('input[name=' + ele + ']'); // do something with target }); 如果创建多个新实例,它不会花费任何成本?只有在循环之外使用它时,它才真正重要 在循环外部定义target意味着在循环
elementsArray.forEach(function(ele) {
var target = $('input[name=' + ele + ']');
// do something with target
});
如果创建多个新实例,它不会花费任何成本?只有在循环之外使用它时,它才真正重要
target
意味着在循环执行最后一个$('input[name='+ele+'])
元素后,循环命中的target
变量仍将被赋值target
将意味着target
将在循环外部未定义foreach
的行为将不同forEach
为数组中的每个项创建新的范围
(功能级别)
对于全局变量,它将覆盖每个迭代的值。对于局部变量,它将为每个项创建新实例
如果在forEach
中处理任何点击事件
,对于global
变量,当值被覆盖时,它将始终考虑最后一项 两者不是一回事
它不仅仅是一个循环,它是在循环中被调用的函数
每个函数都有自己的作用域
在第一个示例中,target对包含此forEach循环的函数可见,在第二个示例中,target仅在该函数内部可见。它取决于您希望如何使用变量它取决于您需要完成什么。你会问什么是更好的
-
或+
。因此,如果目标只在循环中使用。那么最好在循环中定义,对吗?如果创建多个新实例并不需要花费多少钱?@Expertwannabe定义多次的性能损失是完全可以忽略不计的。谢谢你的回答和宝贵的时间!
elementsArray.forEach(function(ele) {
var target = $('input[name=' + ele + ']');
// do something with target
});