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

时间:2017-12-15 23:22:23

标签: javascript html iife

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

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

print_name('Foo','Bar')
&#13;
&#13;
&#13;