为什么我尝试使用IFFE时此代码不起作用

时间:2019-06-20 05:36:30

标签: javascript function iife

我试图运行此代码。

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

这有什么问题?

3 个答案:

答案 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”。