ホームページ ウェブフロントエンド jsチュートリアル JavaScript がセミコロンを自動的に挿入しないようにする方法

JavaScript がセミコロンを自動的に挿入しないようにする方法

May 16, 2016 pm 03:33 PM

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 ビデオ チュートリアル をご覧ください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? Apr 04, 2025 pm 02:42 PM

フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

誰がより多くのPythonまたはJavaScriptを支払われますか? 誰がより多くのPythonまたはJavaScriptを支払われますか? Apr 04, 2025 am 12:09 AM

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

javascriptの分解:それが何をするのか、なぜそれが重要なのか javascriptの分解:それが何をするのか、なぜそれが重要なのか Apr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? Apr 04, 2025 pm 05:09 PM

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Apr 04, 2025 pm 05:12 PM

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...

Shiseidoの公式Webサイトのように、視差スクロールと要素のアニメーション効果を実現する方法は?
または:
Shiseidoの公式Webサイトのようにスクロールするページを伴うアニメーション効果をどのように実現できますか? Shiseidoの公式Webサイトのように、視差スクロールと要素のアニメーション効果を実現する方法は? または: Shiseidoの公式Webサイトのようにスクロールするページを伴うアニメーション効果をどのように実現できますか? Apr 04, 2025 pm 05:36 PM

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

JavaScriptは学ぶのが難しいですか? JavaScriptは学ぶのが難しいですか? Apr 03, 2025 am 12:20 AM

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

フロントエンド開発でVSCodeと同様に、パネルドラッグアンドドロップ調整機能を実装する方法は? フロントエンド開発でVSCodeと同様に、パネルドラッグアンドドロップ調整機能を実装する方法は? Apr 04, 2025 pm 02:06 PM

フロントエンドのVSCodeと同様に、パネルドラッグアンドドロップ調整機能の実装を調べます。フロントエンド開発では、VSCODEと同様のVSCODEを実装する方法...

See all articles