Javascript 为什么不访问变量

Javascript 为什么不访问变量,javascript,scope,iife,Javascript,Scope,Iife,似乎无法理解为什么它无法访问变量“a”: var a=function(){ console.log('AAA'); } (功能(){ 控制台日志(a); })();实际上你建立了一个生活。这意味着: var a = function(){ console.log('AAA'); } () 实际调用函数,并将其结果存储在。如果将一个函数作为参数放入该函数调用中,由于第一个函数不接受任何参数,因此该函数将不起作用。 var a=function(){ console.log('AAA

似乎无法理解为什么它无法访问变量“a”:

var a=function(){
console.log('AAA');
}
(功能(){
控制台日志(a);

})();实际上你建立了一个生活。这意味着:

 var a = function(){
    console.log('AAA');
}
()
实际调用函数,并将其结果存储在。如果将一个函数作为参数放入该函数调用中,由于第一个函数不接受任何参数,因此该函数将不起作用。

var a=function(){
console.log('AAA');
};
(功能(){
控制台日志(a);
a();

}());这里的问题是您试图按如下方式调用函数
undefined()
,为什么

事情就是这样:

var a = function(){
    console.log('AAA');
}(...) //<- here you're calling the function `a`, but your function `a` doesn't return anything (`undefined`)
var a=function(){
console.log('AAA');

}(…)//为什么不是呢。。。您的代码在
a
的值后缺少分号。请添加分号。您正在执行第一个函数,并将第二个函数作为参数传递。然后,当您尝试调用
undefined
时,它会抛出一个错误,因为没有返回值。不是吗?我会投赞成票,因为你的答案解释了问题,但它在技术上是不正确的,说
,并将其结果存储在
中。由于存在两个链式调用,
var a=function(){…}(…)()
这就是问题中的代码段抛出错误的原因。没有解释的答案不是答案。