5

どうして

function(){ alert("test123");}()

生産するSyntaxError: Unexpected token (

その間

!function(){ alert("test123");}()

アラート「test123」

?

4

1 に答える 1

3

これは、!符号を追加することで、宣言を式に変換し、すぐに呼び出すためです。関数を括弧で囲むと、最初の例がエラーなしで機能するようになります。

(function(){ alert("test123");})()

より明確にするために、最初の式を次のように考えることができます。

if (false || !function(){ return false; }())


@zerkms が気付いたように、Immediate- invoking functions の完全な説明があります。

于 2013-08-27T08:15:21.040 に答える