从HTML中调用IIFE函数中定义的函数

问题描述 投票:-1回答:2

我在名为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函数。

javascript html iife
2个回答
1
投票

由于您使用print_name声明var,因此它的范围是IIFE的本地范围,因此您无法从外部调用它。您需要分配给window.print_name以使其全局化。

(function mainIIFE() {
    "use strict";
    window.print_name = function(first, last) {
        console.log(first + " " + last);
    };
}());

还不清楚为什么你使用new来调用函数,因为它没有填充对象。


1
投票

您可以返回该函数并将其存储在变量中。这与将其分配给IIFE中的window.print_name基本相同,因为新变量将位于全局名称spce中

var print_name = (function mainIIFE() {
    "use strict";
    var print_name = function(first, last) {
        console.log(first + " " + last);
    };
    return print_name;
}());

print_name('Foo','Bar')
© www.soinside.com 2019 - 2024. All rights reserved.