0

無名関数に引数を渡すと結果に影響するのはなぜですか? たとえば、次のスクリプトは a1 を a として、function()a2 を配列として示しています。

var a1=(function(){return [1*2,2*2,3*2];});
var a2=(function(v){return [1*v,2*v,3*v];})(2);
console.log(a1,a2);

結果:

function() [2, 4, 6]
4

2 に答える 2

2

a1 への割り当ては匿名関数を作成するだけで、実際には実行しないためです。

a2 への割り当ては、実際に呼び出すために後で括弧を追加したため、関数の作成実行を同時に行います。

同等のコードを作成するには、次のようなものが必要です。

var a1=(function(){return [1*2,2*2,3*2];})(); <-- note the extra parens
var a2=(function(v){return [1*v,2*v,3*v];})(2);
console.log(a1,a2);
于 2013-10-07T17:42:40.870 に答える
1

コードの最初の行は関数を呼び出しません。

書き込みvar a = function() { ... }は、関数自体を に割り当てますa

2行目は、他の関数呼び出しと同じように、を使用して関数を呼び出します(2)

于 2013-10-07T17:42:08.333 に答える