1

次のような関数定義の最後にセミコロンを追加する必要がありますか?

function helloWorld() {
     //some code 
}; //note the semicolon here at the end is it ever necessary? Ever

これはオプションだと誓う友人がいます。私はそれがオプションではないと思います私はそれが関数の終わりでオプションであることについて何も読んだことがありません。私は誰も「彼を除いて」それをするのを見たことがありません。セミコロンはオプションです。

var hellWorld = function (){

}; // the semicolon here it is optional because you are defining a variable this is OK and optional 
4

4 に答える 4

5

セミコロンは式を区切ります。空のステートメントを区切るため、1つの後に任意の数のセミコロンを追加できます。

function() {
   // Works.
};;;;;;;;;;;;;;;;;;;;;

関数の後のセミコロンは「オプション」ではなく、明らかに冗長です。

実際にオプションのものについては、ほとんどの場合、Javascriptが改行の前にセミコロンを追加するためです。これらは明示的に書く必要があります。あなたは遅かれ早かれ自動セミコロンの欠如に噛まれるでしょう。

于 2013-03-01T18:23:14.913 に答える
3

その場合、はい、それは必要ありません。

これは正常に機能します。

function foo() {} var x = "hi";

ただし、これは構文エラーです。

var foo = function() {} var x = "hi";

後の改行}、またはセミコロンで問題ありません。両方は必要ありません。通常、セミコロンがないとプログラムが無効な場合は、改行または閉じ中括弧の前にセミコロンが挿入されます。しかし、場合によっては、プログラムはそれがなくても有効ですが、何か別のことを意味します。したがって、セミコロンの挿入に依存するように注意する必要があります。

例:

var x = "foo"
/foo/.test(x)

ここでは、最初の行の最後にセミコロンを挿入したかったのですが/、正規表現のが除算演算子である可能性があるため、やけどを負いました。したがって、セミコロンの挿入はありません。に到達したときにこれが無効であるという事実は、有効なプログラムフラグメントであるため、セミコロンの挿入はあり.ません。var x = "foo" /

これが、「セミコロンの挿入に頼らない」と言う人がいる理由です。

ただし、関数定義の後にセミコロンは必要ありません。

于 2013-03-01T18:37:31.313 に答える
0

必須ではありません。暗黙的に挿入されますが、暗黙的な挿入に依存すると、微妙でデバッグが難しい問題が発生する可能性があります。しないでください。あなたはそれよりも優れています。

セミコロンの欠落が特に危険な場所がいくつかあります。

// 1.
MyClass.prototype.myMethod = function() {
  return 42;
}  // No semicolon here.

(function() {
  // Some initialization code wrapped in a function to create a scope for locals.
})();


var x = {
  'i': 1,
  'j': 2
}  // No semicolon here.

// 2.  Trying to do one thing on Internet Explorer and another on Firefox.
// I know you'd never write code like this, but throw me a bone.
[normalVersion, ffVersion][isIE]();


var THINGS_TO_EAT = [apples, oysters, sprayOnCheese]  // No semicolon here.

// 3. conditional execution a la bash
-1 == resultOfOperation() || die();
于 2013-03-01T18:22:45.760 に答える
-1

必須ではありませんが、良いスタイルです。しかし、余分な空白を削除したり、変数などを短縮したりするミニファイアを使用する場合、セミコロンを省略すると問題が発生することがよくあります。

于 2013-03-01T18:43:52.860 に答える