この問題は多くの記事で議論されていますが、ESlintの仕様でもセミコロンを付けるか付けないかで2つに分かれています。重要なのは、JavaScript に対するセミコロンの影響を理解する必要があるということです。始める前に、次のインタビューの質問を見てみましょう:
このコードは正常に実行できますか?
var a = 1 (function() { console.log(2) })()
このコードを実行すると、次のエラーが表示されます:
Uncaught TypeError: 1 is not a function
なんてことだ! 1 は関数
ではありませんか?数値 1 を実行するつもりはありませんでしたが、なぜ数値 1 は関数ではないのでしょうか? この種のエラーは見つけるのが難しく、問題のあるコード行の周りをぐるぐる回ってしまうことがよくあります。このエラーは、上記のコードが実行時に同じ行であるとみなされるためであると考えられます。概念は次のとおりです:
var a = 1(function() { /* */ })()
したがって、即時関数の ()
が 1 に追加されます。これは関数を呼び出すための構文であるため、エラー 1 は関数ではありません
が発生します。このエラーを回避したい場合は、セミコロンを使用する必要があります:
var a = 1 // 随便把分号放在哪里,只要能隔开就行 ;(function() { console.log(2) })()
が自動的に挿入されます。このメカニズムにより、一部のコードはセミコロンを追加せずに正常に実行できます。たとえば、次の例: var b = 1
++b
console.log('b', b)
は単項式に属しているため、変数は左側の または
右側にのみ配置できます。 ASI メカニズムがない場合、コードは var b = 1 b のようなエラー ステートメントに変換されます。しかし幸いなことに、ASI では実際の動作中にセミコロンが自動的に追加されるため、上記のエラーは発生しません。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">var b = 1;
++b;
console.log('b', b); // 2</pre><div class="contentsignin">ログイン後にコピー</div></div>
return とセミコロンの関係
の後の空行の後に返される値を記述します。逃げるよう頼む 結局どうなるの? <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">function fn() {
return
'小明'
}
console.log(fn())</pre><div class="contentsignin">ログイン後にコピー</div></div>
このプログラムコードではASIの修正により、
の後にセミコロンが追加されるため、return
と期待される戻り値が分離されます。結果の return
は null 値であり、最終結果は unknown
のみになります。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">function fn() {
return;
'小明';
}
console.log(fn()); // undefined</pre><div class="contentsignin">ログイン後にコピー</div></div>
セミコロンの扱い方
ASI 問題を解決する方法は次のとおりです:
いずれの場合も、セミコロンを追加する必要があります。コードの分割を決定するのは完全にあなた次第です。新しい行のコードは
(## からです) #、/
文字で始まる場合、この種の状況は通常、Uncaught TypeError
を直接引き起こし、コードを実行できなくなります。 ##var a = 1 var b = a (a + b).toString() var a = 1 [1,2,3].forEach(bar) (function() { })() (function() { })() var a = 1 var b = a /test/.test(b)
改行は
、 %
で始まります。最初は、これらの状況のほとんどは次のようになります。
var a = 2 var b = a +a
新しい行は ,
または ;
を追加できます (ESLint 標準 JS 仕様では、エラーを回避するためにこの方法が使用されています)。 ##概要
セミコロンを追加しないとコードがすっきりして合理化されると考える人もいますが、ほとんどの場合はそうではなく、エラーが発生するため、多くの人はコードを入力するときにセミコロンを追加しません。 プログラミング関連の知識については、
プログラミング入門!!
をご覧ください。
以上がJSコードにセミコロンを追加する場合と追加しない場合の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。