2.

文法

編集

本稿は JavaScript の文法に関する記事です。変数・関数・条件分岐・ループ・配列・連想配列など、JavaScript で日常的に使われる基本構文を扱います。

子ページから項目を選択してください。

本ページの子ページ

文法の全体像

カテゴリ主なキーワード
変数宣言varletconst
データ型number、string、boolean、null、undefined、bigint、symbol、object
演算子算術 (+ - * / %)、比較 (=== !==)、論理 (&& ||)、ぬる合体 (??)、オプショナルチェイン (?.)
制御構文ifelseswitchforwhilefor...offor...inbreakcontinue
関数function 宣言、関数式、=> (アロー関数)、デフォルト引数、可変長引数 (...)
オブジェクトオブジェクトリテラル { key: value }、分割代入 const { a } = obj;
配列[]、スプレッド ...mapfilterreduce
クラスclassextendssuper
モジュールimport / export (ES Modules)
非同期Promiseasync / await
エラー処理try / catch / finally / throw

変数宣言の使い分け

キーワードスコープ再代入再宣言用途
constブロック不可不可基本これを使う
letブロック不可変化する変数
var関数レガシー。新規コードでは避ける

比較演算子の注意点

  • ==型変換ありの比較 (0 == "0" は true)。基本は使わない
  • ===厳密比較。これを使う
  • NaN === NaN は false。判定は Number.isNaN(x)
  • null == undefined は true、null === undefined は false

関数の3つの形

// 関数宣言
function add(a, b) { return a + b; }

// 関数式
const sub = function(a, b) { return a - b; };

// アロー関数
const mul = (a, b) => a * b;

近年の重要な追加

  • ES2015 (ES6): let/const、アロー関数、テンプレートリテラル、class、モジュール、Promise
  • ES2017: async / await
  • ES2020: オプショナルチェイン (?.)、ぬる合体 (??)、BigInt
  • ES2021〜: 論理代入 (??=)、Array#at、structuredClone (環境依存)

注意点

  • 古いブラウザサポートが必要な場合はBabel + polyfillを併用
  • 厳密モード 'use strict'; を冒頭に書く (モジュールでは自動で有効)
  • 本番コードでは TypeScript も検討。型ミスをコンパイル時に検出可能

関連

編集
Post Share
子ページ
  1. 記述方法
  2. コメント
  3. 変数の宣言
  4. 関数
  5. 演算子
  6. 条件文
  7. 配列
  8. 連想配列
  9. ループ処理
  10. 非同期処理
  11. 同期処理
  12. 確認ウィンドウを表示する方法
  13. 文字の置換
  14. base urlを取得する方法
  15. formのsubmit前にjavascriptを呼び出す方法
  16. undefinedのイコール判定
  17. Javascript のみで form を post で submit する方法
同階層のページ
  1. 環境構築
  2. 文法
  3. プラットフォーム
  4. ライブラリ
  5. フレームワーク
  6. テンプレートエンジン
  7. ビルトインオブジェクト
  8. エラー一覧
  9. よくある事例