一旦执行上下文进入 IIFE,它就会说alert 不是一个函数。关于 IIFE 有什么我需要了解的具体事情吗?或者我做错了什么?
var test = 0;
function makeTest() {
var test = 10;
alert(test);
alert(window.test)
(function() {
var test = 20;
alert(test);
alert(window.test);
})();
}
alert(test);
makeTest();
alert(test);Run Code Online (Sandbox Code Playgroud)
它说alert(...)不是一个函数,不是alert不是一个函数。
您的代码正在尝试执行此操作:
\n\nalert(window.test)(function () { })();\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\xa6 因为您成为自动分号插入的受害者,无法按您预期的方式工作。
\n\n即您正在调用匿名函数的返回值alert()并将其作为参数传递。
明确语句的结束位置。使用分号。
\n\nalert(window.test)(function () { })();\nRun Code Online (Sandbox Code Playgroud)\r\n或者在块中使用let而不是 IIFE:
var test = 0;\r\n\r\nfunction makeTest() {\r\n var test = 10;\r\n alert(test);\r\n alert(window.test);\r\n (function() {\r\n var test = 20;\r\n alert(test);\r\n alert(window.test);\r\n })();\r\n}\r\nalert(test);\r\nmakeTest();\r\nalert(test);Run Code Online (Sandbox Code Playgroud)\r\n| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |