2

JavaScript関数について読んで、次のように定義した直後に関数を呼び出すことができることを理解しています:

al = function(string){
      alert(string)
}("test");

ただし、空の括弧で同じことを行うことはできません。

al = function(){
      alert("test")
}();

代わりに、関数を関数式に変換する必要があります。

al = (function(){
      alert("test")
})();

これはなぜですか? また、最初のコード例がこの変換なしで正しく機能するのはなぜですか?

4

1 に答える 1

2

あなたの3つの例はすべてほぼ同じです。al =これらの関数は何も返さないため、 は機能的に何もしないalことに注意してくださいundefined。彼らが何かを返した場合、それはに割り当てられalます。 al =最初の 2 つの式が構文的に正しいために必要です。

最初の例は、引数を取るという点で異なります。他の 2 つはそうではありませんが、エクスプレッションの動作には影響しません。

括弧は、式を示すためにも使用できます。たとえば、(function () {})()有効な構文ですが、function () {}()そうではありません。 =も式を通知するためvariableName = function () {}()、機能します。

于 2013-03-11T01:05:06.053 に答える