はこの形式で多くの利用状況を見たことがあります:なぜ匿名のJavaScript関数に0がありますか?
(0, function(a, b){console.log(a + b)})(3, 4)
0
は何ですか?
はこの形式で多くの利用状況を見たことがあります:なぜ匿名のJavaScript関数に0がありますか?
(0, function(a, b){console.log(a + b)})(3, 4)
0
は何ですか?
その0
は無視されます。
コンマ演算子は(左から右へ)、そのオペランドの各々を評価し、最後のオペランドの値を返す:コンマcomma operatorあること
。
基本的0
が0
として評価されていることを、その関数式が評価され、関数はコンマリストで評価最後のものであるので、それへの関数の参照が返されます。これは呼び出された返された関数です。
ご質問のコードで0
は完全に役に立たないです。
しかし、それは作者ではなく、このことを意図していることが考えられます。
0,function(a, b){console.log(a + b)}(3, 4);
2つの文字(
と)
を入力して保存されますが、それは非常に便利ではありませんので、それはとにかく2つの文字をとります。
parenthesis or a bang prefixと同じ目的を果たします。
0
は効果がない式です。 comma operatorは、右側をエクスプレッション・コンテキストに置きます。
これはfunction
は、代わりにこのあなたが生命維持として扱うしようとした場合、エラーをスローします関数宣言(の(IIFEことができる)機能表現の開始として扱われることを意味コードは(3, 4)
と続きます)。
'function(a、b){console.log(a + b)}(3,4)'は有効な構文ではありません。だから、そのコードの作者は、それを呼び出すためにカンマ式を使いました。作者は '(function(a、b){console.log(a + b)})(3,4)' –
@RajaprabhuAravindasamyだが、 '(function(a、b){console.log (a + b)})(3,4) 'が有効です – Hom
これは別のIIFE構文です。私はまた、著者がカンマを使用する理由を理解していません – evolutionxbox