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()関数を返します。発火しますが、返される関数を呼び出さないだけです。2 番目の例では、内部関数を返し、経由で起動していtest()ます。例を類似させたい場合は、 に変更test = count()test = counterます。

于 2013-03-01T07:04:56.623 に答える
0

あなたのコードで

var counter = function () {

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

counter(); 

counter()の代わりに関数を取得するのは簡単です。これは、値を返す関数を呼び出すようなものであり、それをキャッチしていません。

2番目のコードで行ったように、return関数をキャッチして、それを呼び出す必要があります。

于 2013-03-01T07:07:50.343 に答える
0

Ok with your first example, you are assigning

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

to the variable. But aren't asking for it's value. In your second example, you assign the function to the variable as above, then you call are calling it.

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

counter();

This would fire

于 2013-03-01T07:05:32.817 に答える