ホームページ > 記事 > ウェブフロントエンド > JavaScript がセミコロンを自動的に挿入しないようにする方法
JavaScript には、行末にセミコロンを自動挿入するメカニズムがあります。これにより、セミコロンの入力を忘れることを許容できる人もいます。 もちろん、セミコロンを入力する習慣を身につけ、セミコロンの省略を JavaScript がどのように処理するかを理解することが最善です。この知識は、セミコロンのないコードを理解するのに役立ちます。
JavaScript 言語にはメカニズムがあります。解析中に、文の後にセミコロンを自動的に挿入して、文末の欠落しているセミコロン区切り文字を修正できます。ただし、この自動的に挿入されたセミコロンは、すべての空白文字が無視されるという JavaScript 言語の別のメカニズムと競合するため、プログラムは空白を使用してコードをフォーマットできます。
これら 2 つのメカニズム間の競合により、より深刻な解析エラーが簡単に隠蔽される可能性があります。セミコロンが不適切なタイミングで挿入されることがあります。たとえば、return ステートメントにセミコロンを自動的に挿入すると、次のような結果になります。 return ステートメントが値を返す場合、この値の式の先頭は return と同じ行にある必要があります。たとえば、
var f = function(){ return { status: true }; }
ここではステータスメンバー要素を含むオブジェクトが返されるようです。残念ながら、JavaScript は自動的にセミコロンを挿入し、未定義を返すため、以下で返されるオブジェクトが無視されます。
セミコロンの自動挿入によりプログラムが誤解される場合、警告は表示されません。この問題は、次の行の先頭ではなく前の行の末尾に { を配置することで回避できます。例:
var f = function(){ return { status: true }; }
セミコロンを省略することをお勧めします。 行内のステートメントが完全であるかどうかに関係なく、完全なステートメントである限り、文の終わりを示すためにセミコロンを追加する必要があります。
読みやすくするために、長い文を複数の行に分けて表示する必要がある場合、完全な論理意味論を 1 行で形成できないようにする必要があります。たとえば、次のコードは連続した代入ステートメントです。別々の行に表示すると、それらの関係がより明確に表示されます。この種の分岐は、独立した論理セマンティクスを 1 行で形成できないため、JavaScript は各行を独立した文として扱わないため、あいまいさが存在しないことを示しています。
var a = b = c = 4;
上記のステートメントは、次のように 1 行で表示されます: var a = b = c = 4;
次のステートメントの場合、if正しくありません。別々の行に表示すると、あいまいさが生じやすくなります。この文の意味: 変数 i を定義し、それに値を代入します。変数 a が true の場合、その値は 1 に代入されます。それ以外の場合は、変数 b が true であると判断され、値が代入されます。それ以外の場合は変数 c が判定され、c が true の場合は代入値は 3、それ以外の場合は代入値は 4 となります。
var i = a ? 1 : b ? 2 : c ? 3 : 4;
以下の分岐表示は間違っています。式 a? 1: b は独立した論理セマンティクスを形成できるため、JavaScript は独立した文を表すためにその後ろにセミコロンを自動的に追加します。
var i = a ? 1: b ? 2 : c ? 3 : 4;
安全なメソッドは、各行が独立したセマンティクスを形成できないように、次のように別々の行に表示する必要があります。
var i = a ? 1 : b ? 2 : c ? 3 : 4;
つまり、コードを書くときは、完全な文はすべてセミコロンで区切る必要があります。文を別々の行に表示する場合は、単一の行が独立した法的論理セマンティクスを簡単に形成できないようにする必要があります
追記: 行末にセミコロンを自動的に追加する JavaScript の詳細な例
セミコロン (;)。通常はステートメントの行の最後に使用されます。コードは次のとおりです:
var webName = "php中文网"; var url = www.jb51.net;
上記のコードは、各宣言ステートメントの後にセミコロンを追加します。これについてはこれ以上説明する必要はありません。
var webName = "php中文网" var url = www.jb51.net
実際、セミコロンは省略できますが、省略されたセミコロンはコンパイル段階で自動的に追加されます。
コード例を見てみましょう:
function done(webName){ return webName } console.log(done("php中文网"));
コンパイラーが各行の後に自動的にセミコロンを追加するため、出力値は「php Chinese net」ではなく、undefinated となります。
上記はこの章の全内容です。その他の関連チュートリアルについては、JavaScript ビデオ チュートリアル をご覧ください。