2016-09-19 13 views
1

はこの形式で多くの利用状況を見たことがあります:なぜ匿名のJavaScript関数に0がありますか?

(0, function(a, b){console.log(a + b)})(3, 4) 

0は何ですか?

+1

'function(a、b){console.log(a + b)}(3,4)'は有効な構文ではありません。だから、そのコードの作者は、それを呼び出すためにカンマ式を使いました。作者は '(function(a、b){console.log(a + b)})(3,4)' –

+0

@RajaprabhuAravindasamyだが、 '(function(a、b){console.log (a + b)})(3,4) 'が有効です – Hom

+0

これは別のIIFE構文です。私はまた、著者がカンマを使用する理由を理解していません – evolutionxbox

答えて

-1

その0は無視されます。

コンマ演算子は(左から右へ)、そのオペランドの各々を評価し、最後のオペランドの値を返す:コンマcomma operatorあること

基本的00として評価されていることを、その関数式が評価され、関数はコンマリストで評価最後のものであるので、それへの関数の参照が返されます。これは呼び出された返された関数です。

ご質問のコードで0は完全に役に立たないです。

しかし、それは作者ではなく、このことを意図していることが考えられます。

0,function(a, b){console.log(a + b)}(3, 4); 

2つの文字()を入力して保存されますが、それは非常に便利ではありませんので、それはとにかく2つの文字をとります。

-1

parenthesis or a bang prefixと同じ目的を果たします。

0は効果がない式です。 comma operatorは、右側をエクスプレッション・コンテキストに置きます。

これはfunctionは、代わりにこのあなたが生命維持として扱うしようとした場合、エラーをスローします関数宣言(の(IIFEことができる)機能表現の開始として扱われることを意味コードは(3, 4)と続きます)。

関連する問題