JavaScriptセミコロンはオプションです。個人的には、コードでセミコロンを使用しないようにするのが好きですが、多くの人がセミコロンを好みます。
JavaScriptのセミコロンは、コミュニティを分割します。何があっても、常にそれらを使用することを好む人もいます。他の人はそれらを避けたいです。
セミコロンを何年も使用した後、2017年の秋に、必要に応じてセミコロンを回避することにしました。セミコロンを必要とする特定のコード構造がない限り、コードからセミコロンを自動的に削除するようにPrettierを設定しました。
今ではセミコロンを避けるのが自然だと思います。コードは見栄えが良く、読みやすくなっていると思います。
JavaScriptは厳密にセミコロンを必要としないため、これはすべて可能です。セミコロンが必要な場所がある場合は、舞台裏で追加します。
これを行うプロセスはと呼ばれます自動セミコロン挿入。
期待どおりに動作しないためにバグを生成するコードを記述しないように、セミコロンを強化するルールを知っておくことが重要です。
JavaScriptの自動セミコロン挿入のルール
JavaScriptパーサーは、ソースコードの解析中に次の特定の状況を検出すると、セミコロンを自動的に追加します。
- 次の行が現在の行を壊すコードで始まる場合(コードは複数行で生成される可能性があります)
- 次の行がで始まるとき
}
、現在のブロックを閉じる - ソースコードファイルの終わりに達したとき
- あるとき
return
独自の行のステートメント - あるとき
break
独自の行のステートメント - あるとき
throw
独自の行のステートメント - あるとき
continue
独自の行のステートメント
あなたが思っていることをしないコードの例
これらのルールに基づいて、いくつかの例を示します。
これを取る:
const hey = 'hey'
const you = 'hey'
const heyYou = hey + ' ' + you
[‘h’, ‘e’, ‘y’].forEach((letter) => console.log(letter))
エラーが発生しますUncaught TypeError: Cannot read property 'forEach' of undefined
ルールに基づいているので1
JavaScriptはコードを次のように解釈しようとします
const hey = 'hey';
const you = 'hey';
const heyYou = hey + ' ' + you['h', 'e', 'y'].forEach((letter) => console.log(letter))
そのようなコード:
(1 + 2).toString()
プリント"3"
。
const a = 1
const b = 2
const c = a + b
(a + b).toString()
代わりにTypeError: b is not a function
例外、JavaScriptはそれを次のように解釈しようとするため
const a = 1
const b = 2
const c = a + b(a + b).toString()
ルール4に基づく別の例:
(() => {
return
{
color: 'white'
}
})()
この即時呼び出し関数の戻り値は、を含むオブジェクトであることが期待されます。color
プロパティですが、そうではありません。代わりに、それはundefined
、JavaScriptは後にセミコロンを挿入するためreturn
。
代わりに、オープニングブラケットを直後に配置する必要がありますreturn
:
(() => {
return {
color: 'white'
}
})()
このコードはアラートに「0」を示していると思います。
1 + 1
-1 + 1 === 0 ? alert(0) : alert(2)
ただし、ルール1のJavaScriptは次のように解釈するため、代わりに2が表示されます。
1 + 1 -1 + 1 === 0 ? alert(0) : alert(2)
結論
注意してください。一部の人々はセミコロンについて非常に意見があります。正直言って気にしません。ツールには使用しないオプションが用意されているので、セミコロンを避けることができます。
私はあなた自身の決定を選ぶこと以外は何も提案していません。
ほとんどの場合、これらの基本的なシナリオがコードに表示されない場合でも、少し注意を払う必要があります。
いくつかのルールを選択してください:
- 注意してください
return
ステートメント。返品する場合は、返品と同じ行に追加してください(break
、throw
、continue
) - 括弧で行を開始しないでください。括弧は前の行と連結されて、関数呼び出しまたは配列要素参照を形成する場合があります。
そして最終的には、常にコードをテストして、コードが希望どおりに機能することを確認してください
私の無料ダウンロードJavaScriptビギナーズハンドブック
その他のjsチュートリアル:
- JavaScriptで避けるべきこと(悪い部分)
- JavaScriptでの延期と約束(+ Ember.jsの例)
- JavaScriptを使用してサーバーにファイルをアップロードする方法
- JavaScriptコーディングスタイル
- JavaScript配列の紹介
- JavaScriptプログラミング言語の紹介
- 完全なECMAScript2015-2019ガイド
- JavaScriptの約束を理解する
- JavaScriptの字句構造
- JavaScriptタイプ
- JavaScript変数
- サンプルWebアプリのアイデアのリスト
- JavaScriptを使用した関数型プログラミングの概要
- AsyncとAwaitを備えた最新の非同期JavaScript
- JavaScriptのループとスコープ
- マップJavaScriptデータ構造
- JavaScriptデータ構造の設定
- JavaScriptテンプレートリテラルのガイド
- JavaScriptを学ぶためのロードマップ
- JavaScript式
- JavaScriptタイマーを発見する
- JavaScriptイベントの説明
- JavaScriptループ
- map、filter、reduce、findを使用してJavaScriptループを記述します
- JavaScriptイベントループ
- JavaScript関数
- JavaScript用語集
- JavaScriptクロージャの説明
- JavaScriptの矢印関数のチュートリアル
- JavaScript正規表現のガイド
- JavaScriptで文字列に部分文字列が含まれているかどうかを確認する方法
- JavaScriptで配列からアイテムを削除する方法
- JavaScriptオブジェクトのクローンを作成する方法
- Introduction to Unicode and UTF-8
- JavaScriptのUnicode
- JavaScriptで文字列の最初の文字を大文字にする方法
- JavaScriptで数値を通貨値としてフォーマットする方法
- JavaScriptで文字列を数値に変換する方法
- これはJavaScriptで
- JavaScriptで現在のタイムスタンプを取得する方法
- JavaScriptの厳密なモード
- JavaScript即時呼び出し関数式(IIFE)
- JavaScriptを使用して別のWebページにリダイレクトする方法
- JavaScriptオブジェクトからプロパティを削除する方法
- JavaScriptで配列にアイテムを追加する方法
- JavaScriptオブジェクトのプロパティが未定義かどうかを確認する方法
- ESモジュールの紹介
- CommonJSの紹介
- JavaScript非同期プログラミングとコールバック
- JavaScriptで文字列のすべての出現を置き換える方法
- 最新のJavaScript構文のクイックリファレンスガイド
- JavaScriptで数値の先行ゼロをトリミングする方法
- JavaScriptオブジェクトを検査する方法
- JavaScriptの日付に関する最も信頼のおけるガイド
- Moment.jsチュートリアル
- JavaScriptのセミコロン
- JavaScript算術演算子
- JavaScriptMathオブジェクト
- JavaScriptでランダムで一意の文字列を生成する
- JavaScript関数をスリープ状態にする方法
- JavaScriptのプロトタイプの継承
- JavaScriptの例外
- JavaScriptクラスの使用方法
- JavaScriptクックブック
- JavaScriptでの引用
- JavaScriptでメールアドレスを検証する方法
- JavaScript配列内のオブジェクトのセットの一意のプロパティを取得する方法
- JavaScriptで文字列が別の文字列で始まるかどうかを確認する方法
- JavaScriptで複数行の文字列を作成する方法
- ES6ガイド
- JavaScriptで現在のURLを取得する方法
- ES2016ガイド
- JavaScriptの値で新しい配列を初期化する方法
- ES2017ガイド
- ES2018ガイド
- Array.prototype.map()でAsyncとAwaitを使用する方法
- 非同期vs同期コード
- JavaScriptで2つの数値の間に乱数を生成する方法
- HTML CanvasAPIチュートリアル
- JavaScriptのfor-ofループで反復のインデックスを取得する方法
- シングルページアプリケーションとは何ですか?
- WebAssemblyの紹介
- JSONの概要
- JSONPガイド
- Should you use or learn jQuery in 2020?
- プレーンJavaScriptを使用してDOM要素を非表示にする方法
- JavaScriptで2つのオブジェクトをマージする方法
- JavaScript配列を空にする方法
- JavaScriptでURLをエンコードする方法
- JavaScriptでデフォルトのパラメータ値を設定する方法
- JavaScriptでオブジェクトの配列をプロパティ値で並べ替える方法
- JavaScriptオブジェクトのプロパティの数を数える方法
- JavaScriptでcall()とapply()
- WebRTCライブラリであるPeerJSの紹介
- RestとSpreadを使用してオブジェクトと配列を操作する
- JavaScriptでオブジェクトと配列を破棄する
- JavaScriptをデバッグするための決定的なガイド
- TypeScriptガイド
- JavaScriptでオブジェクトのメソッドを動的に選択する
- 未定義をJavaScriptに渡す即時呼び出し関数式
- 緩く型付けされた言語と強く型付けされた言語
- JavaScriptを使用してDOM要素のスタイルを設定する方法
- JavaScriptでのキャスト
- JavaScriptジェネレーターチュートリアル
- node_modulesフォルダーのサイズは問題ではありません。それは特権です
- JavaScriptでモジュールをインポートする際の予期しない識別子エラーを解決する方法
- JavaScriptでオブジェクトのすべてのメソッドを一覧表示する方法
- 文字列replace()メソッド
- 文字列search()メソッド
- 小さなJavaScriptスニペットを実行する方法
- ES2019ガイド
- 文字列charAt()メソッド
- 文字列charCodeAt()メソッド
- 文字列codePointAt()メソッド
- 文字列concat()メソッド
- 文字列endsWith()メソッド
- 文字列includes()メソッド
- 文字列indexOf()メソッド
- 文字列lastIndexOf()メソッド
- 文字列localeCompare()メソッド
- 文字列match()メソッド
- 文字列normalize()メソッド
- 文字列padEnd()メソッド
- 文字列padStart()メソッド
- 文字列repeat()メソッド
- 文字列slice()メソッド
- 文字列split()メソッド
- 文字列startsWith()メソッド
- String substring()メソッド
- 文字列toLocaleLowerCase()メソッド
- 文字列toLocaleUpperCase()メソッド
- 文字列toLowerCase()メソッド
- String toString()メソッド
- 文字列toUpperCase()メソッド
- 文字列trim()メソッド
- 文字列trimEnd()メソッド
- 文字列trimStart()メソッド
- JavaScriptでのメモ化
- 文字列valueOf()メソッド
- JavaScriptリファレンス:文字列
- 数値isInteger()メソッド
- 数値isNaN()メソッド
- 数値isSafeInteger()メソッド
- Number parseFloat()メソッド
- Number parseInt()メソッド
- Number toString()メソッド
- Number valueOf()メソッド
- Number toPrecision()メソッド
- Number toExponential()メソッド
- Number toLocaleString()メソッド
- Number toFixed()メソッド
- Number isFinite()メソッド
- JavaScriptリファレンス:番号
- JavaScriptプロパティ記述子
- オブジェクトassign()メソッド
- オブジェクトcreate()メソッド
- オブジェクトdefineProperties()メソッド
- オブジェクトdefineProperty()メソッド
- オブジェクトentries()メソッド
- オブジェクトfreeze()メソッド
- オブジェクトのgetOwnPropertyDescriptor()メソッド
- オブジェクトgetOwnPropertyDescriptors()メソッド
- オブジェクトのgetOwnPropertyNames()メソッド
- オブジェクトgetOwnPropertySymbols()メソッド
- オブジェクトのgetPrototypeOf()メソッド
- オブジェクトis()メソッド
- オブジェクトisExtensible()メソッド
- オブジェクトisFrozen()メソッド
- オブジェクトisSealed()メソッド
- オブジェクトkeys()メソッド
- オブジェクトpreventExtensions()メソッド
- オブジェクトseal()メソッド
- オブジェクトsetPrototypeOf()メソッド
- オブジェクトvalues()メソッド
- オブジェクトhasOwnProperty()メソッド
- オブジェクトisPrototypeOf()メソッド
- オブジェクトpropertyIsEnumerable()メソッド
- Object toLocaleString()メソッド
- オブジェクトtoString()メソッド
- オブジェクトvalueOf()メソッド
- JavaScriptリファレンス:オブジェクト
- JavaScript代入演算子
- JavaScriptの国際化
- JavaScripttypeof演算子
- JavaScriptの新しい演算子
- JavaScript比較演算子
- JavaScript演算子の優先順位ルール
- 演算子のJavaScriptインスタンス
- JavaScriptステートメント
- JavaScriptスコープ
- JavaScript型変換(キャスト)
- JavaScriptの等式演算子
- JavaScript if / else条件付き
- JavaScriptSwitch条件付き
- JavaScript削除演算子
- JavaScript関数パラメーター
- JavaScriptスプレッド演算子
- JavaScriptの戻り値
- JavaScript論理演算子
- JavaScript三項演算子
- JavaScript再帰
- JavaScriptオブジェクトのプロパティ
- JavaScriptエラーオブジェクト
- JavaScriptグローバルオブジェクト
- JavaScript filter()関数
- JavaScript map()関数
- JavaScriptのreduce()関数
- JavaScriptの `in`演算子
- JavaScript演算子
- JavaScriptでCSSプロパティの値を取得する方法
- JavaScriptの複数の要素にイベントリスナーを追加する方法
- JavaScriptプライベートクラスフィールド
- JavaScriptで日付値で配列を並べ替える方法
- JavaScriptパブリッククラスフィールド
- JavaScriptシンボル
- JavaScriptbcryptライブラリの使用方法
- オブジェクトの破棄を使用するときにフィールドの名前を変更する方法
- TypeScriptを使用せずにJavaScriptで型をチェックする方法
- JavaScript配列に特定の値が含まれているかどうかを確認する方法
- 二重否定演算子とは何ですか! JavaScriptで行いますか?
- JavaScriptの比較で使用する必要がある等しい演算子はどれですか? == vs ===
- JavaScriptはまだ学ぶ価値がありますか?
- JavaScriptで非同期関数の結果を返す方法
- JavaScriptでオブジェクトが空かどうかを確認する方法
- JavaScriptでforループから抜け出す方法
- JavaScriptで特定のインデックスの配列にアイテムを追加する方法
- JavaScriptオブジェクトのプロトタイプを変更すべきでない理由
- JavaScriptでletとvarを使用することの違いは何ですか?
- JavaScript関数をアクティブ化するために使用されるリンク
- JavaScriptで2つの文字列を結合する方法
- JavaScriptで2つの配列を結合する方法
- JavaScriptの値が配列であるかどうかを確認するにはどうすればよいですか?
- JavaScriptで配列の最後の要素を取得するにはどうすればよいですか?
- Axiosを使用してurlencodedデータを送信する方法
- JavaScriptを使用して明日の日付を取得する方法
- JavaScriptを使用して昨日の日付を取得する方法
- JavaScriptの日付から月の名前を取得する方法
- JavaScriptで2つの日付が同じ日であるかどうかを確認する方法
- JavaScriptで日付が過去の日を参照しているかどうかを確認する方法
- JavaScriptでラベル付けされたステートメント
- JavaScriptで2つ以上のプロミスが解決するのを待つ方法
- JavaScriptで2つの日付の間の日数を取得する方法
- Fetchを使用してファイルをアップロードする方法
- JavaScriptで日付をフォーマットする方法
- JavaScriptでオブジェクトのプロパティを反復処理する方法
- JavaScriptで2つの日付の間の日数を計算する方法
- ESモジュールでトップレベルのawaitを使用する方法
- JavaScriptの動的インポート
- JavaScriptオプションのチェーン
- JavaScriptで文字列内の空白を置き換える方法
- JavaScript Nullish Coalescing
- JavaScriptで配列をフラット化する方法
- JavaScriptのこの10年
- Axiosを使用して認証ヘッダーを送信する方法
- JavaScriptのキーワードと予約語のリスト
- JavaScriptで配列を文字列に変換する方法
- すべてのnode_modulesフォルダーのコンテンツを削除する方法
- JavaScript配列から重複を削除する方法
- JavaScriptでLetvs Const
- さまざまなJavaScriptライブラリでの同じPOSTAPI呼び出し
- JSで配列の最初のn個のアイテムを取得する方法
- JSで配列を複数の等しい部分に分割する方法
- JavaScriptでループを遅くする方法
- HTMLキャンバスに画像をロードする方法
- JavaScriptで文字列を単語にカットする方法
- JavaScriptで配列を半分に分割する方法
- HTMLキャンバスにテキストを書き込む方法
- JavaScriptで文字列の最後の文字を削除する方法
- JavaScriptで文字列の最初の文字を削除する方法
- TypeErrorを修正する方法:オブジェクト '#< Object>'の読み取り専用プロパティ 'exports'に割り当てることはできませんエラー
- 終了インテントポップアップを作成する方法
- 要素が別の要素の子孫であるかどうかを確認する方法
- すべてのAxiosリクエストに資格情報を強制する方法
- JavaScriptの「関数ではありません」エラーを解決する方法
- ギャツビー、ファビコンを変更する方法
- Gatsbyを使用して外部JSファイルをロードする
- JavaScriptを使用してダークモードを検出する方法
- 小包、「regeneratorRuntimeが定義されていません」エラーを修正する方法
- AdblockerがJavaScriptで使用されているかどうかを検出する方法
- TypeScriptの型によるオブジェクトの破壊
- Denoハンドブック:Denoの簡潔な紹介🦕
- JavaScriptを使用してパスまたはURLの最後のセグメントを取得する方法
- JavaScript配列の要素をシャッフルする方法
- JavaScriptオブジェクトにキーが存在するかどうかを確認する方法
- イベントバブリングとイベントキャプチャ
- event.stopPropagation vs event.preventDefault()vs.DOMイベントでfalseを返す
- JavaScriptのプリミティブ型とオブジェクト
- JavaScriptで、値がどのタイプであるかをどのように判断できますか?
- JavaScriptの関数から複数の値を返す方法
- JavaScriptの矢印関数と通常の関数
- オブジェクトのプロパティの値にアクセスするには、どのような方法がありますか?
- JavaScriptのnullとundefinedの違いは何ですか?
- メソッドと関数の違いは何ですか?
- JavaScriptのループから抜け出す方法は何ですか?
- JavaScriptのfor..ofループ
- JavaScriptでのオブジェクトの破壊とは何ですか?
- JavaScriptでの巻き上げとは何ですか?
- JavaScriptでコンマをドットに変更する方法
- DOMを使用する際のタイミングの重要性
- JavaScript配列を逆にする方法
- JavaScriptで値が数値かどうかを確認する方法
- JavaScript関数で無制限のパラメーターを受け入れる方法
- JavaScriptプロキシオブジェクト
- バニラJavaScriptを使用したブラウザでのイベント委任
- JavaScriptスーパーキーワード
- XStateの概要
- 値は参照によって渡されますか、それともJavaScriptの値によって渡されますか?
- JavaScriptのカスタムイベント
- JavaScriptのカスタムエラー
- JavaScriptの名前空間
- JavaScriptでのコンマの奇妙な使用法
- JavaScriptでメソッド呼び出しを連鎖させる
- 約束の拒否を処理する方法
- JavaScriptで2つの配列要素を交換する方法
- Gitbookの使用中に「cb.applyは関数ではありません」エラーを修正する方法
- JavaScriptで配列の先頭にアイテムを追加する方法
- Gatsby、「モジュールgatsby-cli / lib / reporterが見つかりません」エラーを修正
- JavaScript配列内のアイテムのインデックスを取得する方法
- JavaScriptで空のオブジェクトをテストする方法
- JavaScriptでオブジェクトを既存の変数に分解する方法
- 配列JavaScriptデータ構造
- スタックJavaScriptデータ構造
- JavaScriptデータ構造:キュー
- JavaScriptデータ構造:セット
- JavaScriptデータ構造:辞書
- JavaScriptデータ構造:リンクリスト
- JavaScript、関数をエクスポートする方法
- JavaScript、複数の関数をエクスポートする方法
- JavaScript、関数を終了する方法
- JavaScript、文字列内の文字を見つける方法
- JavaScript、配列をフィルタリングする方法
- JavaScript、クラスを拡張する方法
- JavaScript、配列内の重複を見つける方法
- JavaScript、配列のアイテムを置き換える方法
- JavaScriptアルゴリズム:線形検索
- JavaScriptアルゴリズム:バイナリ検索
- JavaScriptアルゴリズム:選択ソート
- JavaScriptアルゴリズム:クイックソート
- JavaScriptアルゴリズム:マージソート
- JavaScriptアルゴリズム:バブルソート