[英]Calling function defined in an IIFE function from HTML
我在名為 test.js 的文件中有一個 IIFE 函數,即
(function mainIIFE() {
"use strict";
var print_name = function(first, last) {
console.log(first + " " + last);
};
}());
我將如何在 html 文件中調用 print_name。 在我的腦海里,我有
<head>
<script type="text/javascript" src="test.js"></script>
</head>
和
<script>
new print_name("Bob", "Downs");
</script>
稍后在我的 html 文件中。
但是當我嘗試運行時,它無法識別 print_name 函數。
因為你用var
聲明了print_name
,它的范圍是 IIFE 的本地范圍,所以你不能從外面調用它。 您需要分配給window.print_name
以使其成為全局。
(function mainIIFE() {
"use strict";
window.print_name = function(first, last) {
console.log(first + " " + last);
};
}());
也不清楚為什么要使用new
來調用該函數,因為它沒有填充對象。
您可以返回該函數並將其存儲在變量中。 這本質上與將它分配給 IIFE 中的window.print_name
相同,因為新變量將在全局命名空間中
var print_name = (function mainIIFE() { "use strict"; var print_name = function(first, last) { console.log(first + " " + last); }; return print_name; }()); print_name('Foo','Bar')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.