[英]IIFE, javascript, function undefined
这是我的IIFE功能
var test = function(){
console.log('fire');
}();
它在开始时调用。 但是我该怎么称呼呢?
var fireTestFn = function(){
test();
}
fireTestFn(); // test() is not a function
您可以使用命名函数表达式从内部返回test
。
var test = function fn(){
console.log('fire');
return fn;
}();
IIFE 的结果将被分配给test
,这显然不是一个函数 ,因为你没有从IFEE返回一个函数(或者任何东西)。 把事情简单化; 你想要的是一个命名函数,你可以随时调用任意次数:
function test() {
console.log('fire');
}
test(); // call as often as you want
正如错误所说
test()不是函数
当您自行调用该函数时, 结果存储到test
。
为了能够将test
用作函数并在其他地方重复调用,请不要自行调用
var test = function(){
console.log('fire');
};
或者让函数返回一个内部函数
var test = function () {
return function () {
console.log('fire');
}
};
test
不是函数,它是undefined
。 由于您没有从匿名函数返回任何内容,因此默认情况下将返回undefined
。 所以,当你调用test()
时会出现错误
TypeError:test不是函数
IIFE应括在括号内()
。
()
包装您的匿名函数以使其成为IIFE test
将是该函数 var test = (function() { return function() { document.write('fire'); }; }()); var fireTestFn = function() { test(); } fireTestFn();
这样的东西会起作用
var myNamespace = {};
(function(ns) {
ns.test = function(){
console.log('fire');
};
/*ns.myOtherFunction = function(var1) { }*/
})(myNamespace);
var fireTestFn = function(){
myNamespace.test();
};
fireTestFn();
请参见此处的示例: https : //jsbin.com/helumoveqe/edit?js,console
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.