您如何解释以下javascript代码段?

时间:2019-05-30 16:28:11

标签: javascript ecmascript-6 scope closures

function d() {
  console.log(j)
}

let e = () => console.log(j);

(function() {
  let j = 3;
  d();
  e();
})();

这两个函数的执行都会记录3。

所以我们可以假设,每当执行一个javascript函数时,如果不在当前范围内,它将尝试从父范围解析该变量?

2 个答案:

答案 0 :(得分:0)

一个函数在另一个函数内部声明而不是在另一个函数内部调用时形成闭包。

或者你可以说。

函数可用的变量是在其父函数中声明的变量,而不是在其调用的地方声明的变量。

答案 1 :(得分:0)

console.log(j)都在定义的范围内使用j,而不是在调用函数的地方使用。{p>