我在名为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函数。
答案 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
基本相同,因为新变量将位于全局名称中
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;