自执行功能奇怪的行为?

时间:2015-01-17 21:35:19

标签: javascript

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

(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);

1 个答案:

答案 0 :(得分:4)

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