簡體   English   中英

從 HTML 調用 IIFE 函數中定義的函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM