さまざまな開発者が JavaScript の関数の後にセミコロンを組み込んでいるのを見たことがありますが、組み込んでいない開発者もいます。どちらがベストプラクティスでしょうか?
function weLikeSemiColons(arg) {
// bunch of code
};
または
function unnecessary(arg) {
// bunch of code
}
ベストアンサー1
関数宣言後のセミコロンは必要ありません。
の文法は次FunctionDeclaration
のように記述される。仕様次のようにします。
function Identifier ( FormalParameterListopt ) { FunctionBody }
文法的にはセミコロンは必要ありませんが、なぜ必要か疑問に思うかもしれません。
セミコロンは文を互いに区切るために使用され、 は文FunctionDeclaration
ではありません。
FunctionDeclarations
コードが実行される前に評価され、吊り上げは、この動作を説明するためによく使われる言葉です。
「関数宣言」と「関数ステートメント」という用語は、ECMAScript 仕様には関数ステートメントが記述されていないため、誤って同じ意味で使用されることがよくあります。ただし、文法に関数ステートメントを含む実装もいくつかあります (特に Mozilla)。ただし、これも非標準です。
ただし、 を使用する場合は常にセミコロンを使用することをお勧めしますFunctionExpressions
。例:
var myFn = function () {
//...
};
(function () {
//...
})();
上記の例で最初の関数の後のセミコロンを省略すると、まったく望ましくない結果になります。
var myFn = function () {
alert("Surprise!");
} // <-- No semicolon!
(function () {
//...
})();
Arguments
2 番目の関数を囲む括弧は関数呼び出しとして解釈されるため、最初の関数はすぐに実行されます。
おすすめの講義:
- 名前付き関数式の謎を解く(素晴らしい記事です)
- JavaScript のカプセル化された無名関数の構文を説明する(
FunctionDeclaration
vsについてさらに詳しくFunctionExpression
)