forEach vs(for,while,if,else ..)变量范围 - JavaScript

时间:2018-02-11 12:53:23

标签: javascript

我是Java Script的新手,发现了一种名为“立即函数”的函数。我们为什么使用:

  • 定义功能后立即执行任务
  • 创建新的变量范围

for,while,if else语句不创建新的变量范围但forEach循环确实创建了一个新的范围,这是非常令人困惑的。它背后有什么具体原因吗?以下是示例: -

var foo = 123;
if (true) {
var foo = 456;// updates the value of global 'foo'
}
console.log(foo); // 456;


let  foo2 = 1111111;
var array = new Array(5).fill(5);
array.forEach(function () {
    let foo2 = 222//creates new variable
    // foo2 = 222//updates global variable
});
console.log('test' + foo2);

1 个答案:

答案 0 :(得分:1)

创建新范围的不是forEach,而是function是它的参数。 function始终创建自己的this