1

次のコードは、構文エラーのため機能しません。

function() {
    alert('foo')
}()

上記コードの JSFiddle URL: http://jsfiddle.net/qr2fr/

このコードは、次の方法で関数定義の周りに括弧のペアを追加することで修正できます。

(function() {
    alert('foo')
})()

上記コードの JSFiddle URL: http://jsfiddle.net/t6sJs/

ただし、次の JavaScript コードは正しく機能し、関数定義を囲む余分な括弧のペアなしで文字列 "foo" を警告します。

var a = function() {
    alert('foo')
}()

上記コードの JSFiddle URL: http://jsfiddle.net/qLKsq/

このコードは、関数定義を囲む余分な括弧のペアがなくても機能するのはなぜですか?

4

2 に答える 2

3

JavaScript で関数を定義するには、2 つの方法があります。

宣言(コンパイル時に評価される) と式(実行時に評価される)。

式をすぐに含めることはできますが、宣言を含めることはできません。

functionが式であるか宣言であるかは、直前の内容によって決まります。

(表現にします。=表現にします。「無」はそれを宣言にします。

于 2013-07-16T13:38:12.133 に答える
2

}()、関数が強制的に式になっている場合にのみ有効です。(function(){...})()ペニーピンチャーは!function(){...}()(操作を犠牲にして)バイトを節約するために使用する場合がありますが、これを達成するために一般的に見られます。同様にvar a = ...、オペランドを式として受け取るため、}()機能します。

于 2013-07-16T13:37:49.523 に答える