【问题标题】:Self execute function odd behaviour?自我执行功能奇怪的行为?
【发布时间】:2015-03-16 06:36:52
【问题描述】:

我有这个调用自己的自执行函数:

(function a(x){
    if(x > 0){
        x--;
        console.log(x);
    }
    a(x);
})(5);
//outputs 4 3 2 1 0

这是正确的行为。但是如果我将这个函数传递给一个变量,我怎样才能实现相同的行为?

var a = (function (x){
    if(x > 0){
        x--;
        console.log(x);
    }
    //a(x); outputs error
})(5);

【问题讨论】:

  • 我很确定 a 在这一点上是未定义的(顺便说一句)
  • 你的 IIFE 什么都不返回,所以 aundefined
  • 这里的 a 不是函数,而是保存未定义函数的返回值

标签: javascript


【解决方案1】:

在第二种情况下,Immediately Invoked Function Expression (IIFE) 的结果将是undefined,分配给变量a。因此,a 没有与之关联的函数。

【讨论】:

  • 感谢您的回答。我的第一个示例是否可以达到相同的结果?
  • 你为什么不直接创建一个函数呢?或者将函数表达式分配给a?例如var a = function a(x) { return x+1; };
  • var a =function(x){ if(x > 0){ x--;警报(x); } a(x); };一个(5);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-18
  • 1970-01-01
  • 1970-01-01
  • 2015-11-22
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多