[英]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.