0

私は自己実行型匿名について知っています。そして通常、私たちはそれらを次のように作成します

(function(){ return 1;})()

理由 - 使用すると実行されなかったパーサー機能

function(){ return 1}()

しかし、今日、次のコードも機能することがわかりました(括弧の順序を確認してください)

(function(){ return 1;}())

function(){ return 1; }()それでもSyntaxErrorが返ってくるはずです

理由を説明してください。詳細を取得するための参照用の Thx

PS 質問は(function(){ return 1;}())バリアントについてです!

4

2 に答える 2

2

このフレーズIIFEは、これらの関数のより適切な用語です.. すぐに呼び出される関数式。

それらが同じである理由については、外側の括弧()は単に式を作成し、()一緒に呼び出しを行います。

(function(){ return 1;})()
is the same as:
(function(){ return 1;}())


(function(){ return 1;})()
becomes
(functionexpression)()
becomes
functionexpression()

(function(){ return 1;}())
becomes
(functionExpression())
becomes   
functionExpression()

と同じ理由で

(3)+2 と同じ((3)+2)です。

編集

function(){ return 1; }()

function statementa は aとは異なるため、機能しませんfunction expression。関数ステートメントをすぐに呼び出すことはできません。

于 2016-05-16T14:55:12.053 に答える
2
(function() {})()

(function() {}())

同等です。

2 番目の例を呼び出すには、+関数の前に演算子を含めることができます

+function(){ return 1 }()

即時呼び出し関数式 (IIFE)を参照してください。

于 2016-05-16T14:47:11.323 に答える