ホームページ  >  記事  >  ウェブフロントエンド  >  js_javascriptスキルで定義すると即実行される関数式(関数)の書き方

js_javascriptスキルで定義すると即実行される関数式(関数)の書き方

WBOY
WBOYオリジナル
2016-05-16 17:43:31995ブラウズ
1. はじめに
関数は最初に定義してから使用する必要があります。 これは基本的にすべてのプログラミング言語の鉄則です。
通常、JavaScript 関数を呼び出す必要があります。基本的には、最初に関数を定義してから呼び出します。 例を見てください
コードをコピー コードは次のとおりです:






SayHello

<script> <br>関数 SayHello() <br>{ <br>alert("hello"); <br>//呼び出し関数 <br></script>


しかし、関数を明示的に呼び出す必要がなく、関数が定義されたときに実行されるようにする場合は、どのように記述すればよいでしょうか?

2. 思考プロセス
上記の例から、上記の使用条件を組み合わせると次のように考えることができます。
===》呼び出しは関数内にあるので、関数定義の後に中括弧を追加することで実行できますか? 次のようになります:


コードをコピー
コードは次のとおりです: function SayHello() { alert("hello");
}();


残念ながら、上記の書き方では js 構文エラーが報告されます。
JavaScript パーサーは、グローバル関数または関数内部関数キーワードを解析するときに、デフォルトで中括弧を関数式ではなく関数ステートメントに解析するためです。

つまり、最後の中括弧のペアはデフォルトで名前のない関数に解析され、関数宣言には名前が必要であるため、構文エラー メッセージがスローされます。

===》 また、中括弧でパラメータを渡した場合、それは式に解析されるのではないかと考えているかもしれません。




コードをコピー
コードは次のとおりです。 function SayHello() { alert ("hello");
}(1);


確かに、エラーはなくなりました。 ただし、上記の記述方法は、次の記述方法の効果と同等です。



コードをコピー
コードは次のとおりです。 > function SayHello () { alert("hello"); (1);

相互に関係がないため、関数は実行されません

3. 正しい書き方

JavaScript の場合、ステートメントを括弧 () で囲むことはできないため、この時点でパーサーがfunction キーワードを解析すると、関数宣言ではなく関数式に解析されます。したがって、コード全体 (関数部分と末尾の中括弧のペアを含む) を中括弧で囲むだけです。


コードをコピー

コードは次のとおりです。




コードをコピーします

コードは次のとおりです:
(function SayHello() { alert( "hello"); })();
最初の方法を使用することをお勧めします。
しかし、現在、より優れた JS ライブラリの多くは 2 番目の方法を使用しています。
例: Web グラフィック描画: git、draw2d、...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。