无法在即时调用函数内创建全局函数

时间:2018-01-22 08:12:52

标签: javascript

我想在嵌套的立即调用函数中创建一个全局函数。但是我得到了一些意想不到的结果。请解释一下为什么会这样。

按预期获得功能。



+function(){
	window.myFunction = function(){

	}
	window.anything = true;

	(function(){

	}());

}()
console.log(typeof myFunction);//function




获取未定义而不是函数。我不知道为什么!



+function(){
	window.myFunction = function(){

	}
	(function(){

	}());
}()
console.log(typeof myFunction);//undefined




1 个答案:

答案 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没有任何退货声明。