我试图运行此代码。
var temp = (function () {
var a =10;
return {
function (a) {
console.log('Value of a is ' + a);
}
}
})();
temp();
我希望IIFE返回该函数并将其分配给temp变量,但是 相反,我得到下面的错误。
Uncaught TypeError: temp is not a function
这有什么问题?
答案 0 :(得分:0)
您将返回在其中定义函数的块。而是直接返回该函数。请找到以下代码以供参考。
var temp = (function () {
var a =10;
return function (a) {
console.log('Value of a is ' + a);
}
})();
temp();
如果要从外部范围访问'a'的值,请在内部函数中对参数使用不同的名称。
var temp = (function () {
var a =10;
return function (b) {
a = b || a;
console.log('Value of a is ' + a);
}
})();
temp();
答案 1 :(得分:0)
您需要从return中删除对象文字并返回命名函数
var temp = (function() {
var a = 10;
return function test(a) {
console.log('Value of a is ' + a);
}
})();
temp();
答案 2 :(得分:0)
我想您对'{}'而不是'()'感到困惑。
var temp = (function () {
var a =10;
return (
function (a) {
console.log('Value of a is ' + a);
}
)
})();
temp(<pass 'a' here>);
此外,您将返回未绑定到'a'的函数定义。尝试使用参数调用“ temp”。