2017-08-22 168 views
-2

使用以下代码我如何从log2内部访问a从另一个函数访问函数的局部变量

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

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

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

请发表您的代码作为文本,而不是图像。 – abagshaw

+0

对不起,我从我的手机发布 –

+1

这将很容易发布的bin,而不是图像 – JoseAPL

回答

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 
相关问题