我不明白为什么函数表达式调用不起作用并引发错误。
你能跟我解释一下吗?
var a = function (x) {
alert(x)
}
(function() {
a(1);
}());
谢谢大家
任务比我想象的要容易得多
答案 0 :(得分:9)
这是因为JS会将IIFE解析为该函数的参数调用,所以请使用分号来做到这一点
var a = function (x) {
alert(x)
};
(function() {
a(1);
}());
答案 1 :(得分:1)
由于目前在调用函数的地方,分配尚未发生。
var a; // hoisted, value undefined, no function
// later
a = function (x) {
alert(x);
}(function() {
a(1); // a is still no function
}());
或者您需要插入分号以将分配与呼叫分开,
var a = function(x) {
console.log(x);
};
(function() {
a(1);
}());
或以void
进行分隔
var a = function(x) {
console.log(x);
}
void (function() {
a(1);
}());
答案 2 :(得分:0)