我想在嵌套的立即调用函数中创建一个全局函数。但是我得到了一些意想不到的结果。请解释一下为什么会这样。
按预期获得功能。
+function(){
window.myFunction = function(){
}
window.anything = true;
(function(){
}());
}()
console.log(typeof myFunction);//function

获取未定义而不是函数。我不知道为什么!
+function(){
window.myFunction = function(){
}
(function(){
}());
}()
console.log(typeof myFunction);//undefined

答案 0 :(得分:1)
你错过了分号:
+function(){
window.myFunction = function(){
}; // <-- You were missing this semi-colon
(function(){
}());
}()
console.log(typeof myFunction);//undefined
如果没有这种分号,您的代码就相当于:
+function(){
window.myFunction = (function(){
}(function(){
}()));
}()
console.log(typeof myFunction);//undefined
将undefined
分配给window.myFunction
,因为IIFE没有任何退货声明。