closure闭包

2020-10-15 js面试闭包

特殊情景

Function创建的函数不会形成闭包;
var x = 10;
function createFunction1() {
  var x = 20;
  return new Function("return x;"); // 这里的 x 指向最上面全局作用域内的 x
}

function createFunction2() {
  var x = 20;
  function f() {
    return x; // 这里的 x 指向上方本地作用域内的 x
  }
  return f;
}

var f1 = createFunction1();
console.log(f1()); // 10
var f2 = createFunction2();
console.log(f2()); // 20
最后更新于: 2022年11月16日 19:31