为什么不访问变量

时间:2018-02-21 15:09:56

标签: javascript scope iife

似乎无法弄清楚为什么它无法访问变量' a':



var a = function(){
    console.log('AAA');
}
(function(){
    console.log(a);
})();




3 个答案:

答案 0 :(得分:2)

问题在于您尝试按照setColor调用函数,为什么?

这就是发生的事情:

Color color;
try {
    Field field = Color.class.getField(colorOfSquare);
    color = (Color) field.get(null);
} catch (Exception e) {
    color = null; // Not defined
}

您可以通过添加分号来解决此问题:

undefined()

或者,您可以将函数var a = function(){ console.log('AAA'); }(...) //<- here you're calling the function `a`, but your function `a` doesn't return anything (`undefined`) 声明为声明而不是表达式

看看这个Question以了解更多信息。

var a = function(){
    console.log('AAA');
}; //<- HERE!

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

资源

答案 1 :(得分:0)

实际上你建立了一个IIFE。这意味着:

 var a = function(){
    console.log('AAA');
}
()

实际调用该函数,并将其结果存储在a中。如果将一个函数作为参数放入该函数调用中,它将无处可去,因为第一个函数不接受任何参数。

答案 2 :(得分:-1)

&#13;
&#13;
proc_selfpid()
&#13;
&#13;
&#13;