在执行上下文创建阶段,es6 javascript中的每个块元素都有单独的变量环境吗?

时间:2019-02-13 18:50:01

标签: javascript ecmascript-6

在执行上下文创建阶段,我们创建可变环境。 如何在es6中通过函数内部的块作用域创建变量环境?

ES5语法:

function functionScoping() {
  var arr = [];
  for(var i = 0; i<3;i++) {
    arr.push(function() {
        console.log(i)
    })
  }
  return arr;
}
const fnScope = functionScoping()
fnScope[0]()
fnScope[1]()
fnScope[2]()
  

输出:3 3 3

使用ES6块作用域:

function functionScoping() {
  var arr = [];
  for(let i = 0; i<3;i++) {
    arr.push(function() {
        console.log(i)
    })
  }
  return arr;
}
const fnScope = functionScoping()
fnScope[0]()
fnScope[1]()
fnScope[2]()
  

输出:0 1 2

在执行上下文创建阶段,for循环之后的i的值存储为3,因此ES5的输出为3

关于ES6,执行上下文的行为方式。它会分别存储每个块变量吗?

仍然,这些函数用于创建执行上下文。但是,不知道函数内部的块作用域如何在可变环境创建中执行。谁能给我一些启示?

0 个答案:

没有答案