0

私は JavaScript に比較的慣れていませんが、現在勉強していて、自己実行機能を備えたこの種のコードにたどり着きました。

これが最初のものです:

(function(message){
    var myMessage = message;
    alert(myMessage);
})("hello");

これが2番目です:

(function(message){
    var myMessage = message;
    alert(myMessage);
}("hello"));

どちらも正しく動作しますが、両者の違いは何なのか、いつどちらを使用する必要があるのか​​ 疑問に思っています。

閣下/奥様、あなたの答えは大変役に立ちます。ありがとう++

4

1 に答える 1

1

どちらも有効ですが、2 つの間にはわずかな意味上の違いがあります。IIFE のタグ wikiで次のように説明しました。

2 つの間に小さな意味上の違いがあることを除けば (最初の評価は (IIFE の戻り値) に評価され、2 番目の評価は (定義された関数)<=(呼び出し) に評価されます)、どちらも同じように有効ですが、有名な JavaScript 専門家の Douglas Crockford は次のように述べています。 2 番目の表記法は「間違っており」「非論理的」であると見なされます。

言い換えれば、どちらも正しいですが、どちらも関数定義をステートメントではなく式にレンダリングするため、最初のバージョンは関数の定義をグループ化してからその関数を呼び出しますが、2 番目のバージョンは関数を定義し、呼び出しますそれから、その戻り値をグループ化します...

于 2013-08-04T14:16:54.760 に答える