Code Fix

初級

const宣言で初期値を書き忘れた原因と直し方

constで変数を宣言する際に初期値を書き忘れたときに出るエラーです。letやvarと違い、constは宣言と同時に値を代入することが文法上必須です。

エラーメッセージの読み方

main.js:1
main.js
ファイル名
1
行番号 — Node.jsが構文解析を諦めた位置
SyntaxError
エラークラス — 実行前の構文チェックで検出されました
Missing initializer in const declaration
内容 — 期待していたもの、または受け付けられなかったもの

このエラーが出る典型パターン

パターン1

 1  const price       ;
                  ^
 2  console.log(price);
main.js:1 const price; ^^^^^ SyntaxError: Missing initializer in const declaration

constは宣言と同時に値を代入する必要があります。後から代入するつもりでも、宣言の時点で値が無いと構文エラーになります。

直し方: (空) を = 100 にします。

この問題を解いてみる →

広告
広告スロット(未設定)

パターン2

 1  const name        ;
                  ^
 2  console.log(name);
main.js:1 const name; ^^^^ SyntaxError: Missing initializer in const declaration

nameのような参照型でも同じです。constは宣言時点で必ず初期値が必要です。

直し方: (空) を = "Al" にします。

この問題を解いてみる →

パターン3

 1  const isActive        ;
                      ^
 2  console.log(isActive);
main.js:1 const isActive; ^^^^^^^^ SyntaxError: Missing initializer in const declaration

真偽値を持つ変数でも例外はありません。constは必ず宣言と同時に初期化します。

直し方: (空) を = true にします。

この問題を解いてみる →

パターン4

 1  const items      ;
                  ^
 2  console.log(items);
main.js:1 const items; ^^^^^ SyntaxError: Missing initializer in const declaration

配列でも規則は同じです。constは宣言時点で必ず初期値が必要です。

直し方: (空) を = [] にします。

この問題を解いてみる →

パターン5

 1  const config      ;
                   ^
 2  console.log(config);
main.js:1 const config; ^^^^^^ SyntaxError: Missing initializer in const declaration

オブジェクトでも同様です。あとで代入するつもりでも、宣言時点で値が無いと構文エラーになります。

直し方: (空) を = {} にします。

この問題を解いてみる →

よくある誤解

「後から代入すればいい」という発想はconstには通用しません。letなら後から代入できますが、constは宣言の時点で値が決まっていることを前提にした構文です。

実務での勘所

letなら宣言と代入を分けられるのに、constで同じことができないのは、constが「一度きりの代入で値が決まり、以後変わらない」という契約を持つ変数だからです。もし初期値なしの宣言を許してしまうと、宣言した瞬間から実際に値を代入する行までの間、「まだ値が決まっていないconst」という矛盾した状態が生まれてしまいます。letにはこの制約が無いため、宣言と代入を分けても問題ありません。

演習をはじめる

関連するエラー

広告
広告スロット(未設定)