Javascript 定义循环范围内的变量还是应该超出范围?

Javascript 定义循环范围内的变量还是应该超出范围?,javascript,Javascript,我认为变量应该在循环之外,这样就可以只定义一次变量 像 但是,我读了一些JS编码建议,也就是说,变量应该在范围中定义 那么我应该这样使用吗 elementsArray.forEach(function(ele) { var target = $('input[name=' + ele + ']'); // do something with target }); 如果创建多个新实例,它不会花费任何成本?只有在循环之外使用它时,它才真正重要 在循环外部定义target意味着在循环

我认为变量应该在循环之外,这样就可以只定义一次变量

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

那么我应该这样使用吗

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
    });