从另一个函数访问函数的局部变量

时间:2017-08-22 22:54:17

标签: javascript scope

使用以下代码如何从log2中访问a

   (function() {
     function log() {
       var a = "string";
     }
     log()

     function log2() {
       console.log(log.a);
     }

     console.log(log);
     log2();
   })()

1 个答案:

答案 0 :(得分:1)

JavaScript中使用var关键字声明的变量是功能范围的。这意味着无法从它们声明的函数外部访问它们而不返回它们。解决方案是在外部立即调用的函数中声明变量,该函数将包含变量并使其可用于两个内部函数:

(function() {
  var a;

  function inner1 () {
    a = 'string';
  }

  function inner2 () {
    console.log(a);
  }

  inner1();
  inner2(); // => logs 'string'
})()

console.log(a); // => logs undefined, because a is enclosed
相关问题