我在名为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函数。
由于您使用print_name
声明var
,因此它的范围是IIFE的本地范围,因此您无法从外部调用它。您需要分配给window.print_name
以使其全局化。
(function mainIIFE() {
"use strict";
window.print_name = function(first, last) {
console.log(first + " " + last);
};
}());
还不清楚为什么你使用new
来调用函数,因为它没有填充对象。
您可以返回该函数并将其存储在变量中。这与将其分配给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')