1

为什么这不会触发:

var counter = function () {

    return function() {
        alert('Fire!');
    }
}

counter(); 

但这确实:

var counter = function () {

    return function() {
        alert('Fire!');
    }
}

var test = counter(); 
test();

似乎将函数分配给变量会有所不同,但为什么呢?

4

6 回答 6

3

尝试调用返回的函数

counter()(); 
于 2013-03-01T07:05:52.917 回答
2

您正在返回一个函数。你也必须调用它。

于 2013-03-01T07:04:38.143 回答
2

count()返回一个函数。它确实触发了,它只是不调用它返回的函数。在第二个示例中,您将返回内部函数,然后通过test(). 如果您希望示例相似,请更改test = count()test = counter.

于 2013-03-01T07:04:56.623 回答
0

好的,你的第一个例子,你正在分配

function() {
    alert('Fire!');
}

到变量。但不要求它的价值。在您的第二个示例中,您将函数分配给上述变量,然后您调用它。

于 2013-03-01T07:05:31.400 回答
0
var counter = function () {
        alert('Fire!');
}

counter();

这会火

于 2013-03-01T07:05:32.817 回答
0

在您的代码中

var counter = function () {

    return function() {
        alert('Fire!');
    }
}

counter(); 

你很容易得到一个函数来返回counter()。这就像调用一个返回值的函数而你没有捕捉到它。

您必须捕获返回函数,然后像在第二个代码中那样调用它。

于 2013-03-01T07:07:50.343 回答