コンパイル時のエラー | エラーの発生タイミング | JavaScript 超完全入門 基本から発展までのすべて

スポンサーリンク
スポンサーリンク
amazon
スマイルSALE
--:--:--
ad. 価格範囲を指定して商品を探せます

コンパイル時のエラーとは?

JavaScriptはインタプリタ型言語ですが、コードを実行する前に構文解析(パース)という処理が行われます。

この段階で文法に誤りがあると、コードは実行されずエラーになります。このようなエラーは、一般的に構文エラー(SyntaxError)と呼ばれます。

なお、「コンパイル時エラー」という表現は、JavaやC++などのコンパイル型言語でよく使われます。JavaScriptでは厳密にはコンパイルしているわけではありませんが、実行前に検出されるエラーという意味で使われることがあります。

実行前に検出される主なエラー

JavaScriptで実行前に見つかる代表的なエラーをまとめます。

エラーの種類 発生原因 対策
SyntaxError コードの文法が正しくない。
console.log("Hello World);
括弧や引用符など、構文が正しいか確認する。
SyntaxError 予約語の誤った使用。
const if = 10;
予約語を変数名や関数名に使用しない。
SyntaxError 括弧や波括弧の対応が取れていない。
if (true) {
    console.log("Hello");
括弧や波括弧が正しく対応しているか確認する。

一方、ReferenceErrorTypeErrorは、多くの場合実行時エラーであり、コードが実際にその行まで実行されたときに発生します。

実行時エラーとの違い

種類 発生するタイミング 代表例
構文エラー(SyntaxError) コードを実行する前 閉じ括弧がない、予約語の誤使用など。
実行時エラー コードを実行している途中 ReferenceError、TypeError、RangeErrorなど。

この違いを理解しておくと、エラーの原因を見つけやすくなります。

プログラムの解説

次のコードは、構文エラーが発生する例です。

console.log("Hello World);

このコードでは、文字列を囲む引用符が閉じられていません。

JavaScriptエンジンはコードを解析する段階で文法の誤りを検出するため、このコードは実行されず、SyntaxErrorが表示されます。

よくある構文エラー

括弧の閉じ忘れ

function hello() {
    console.log("Hello");

波括弧が閉じられていないため、構文エラーになります。

カンマの書き忘れ

const user = {
    name: "Alice"
    age: 20
};

プロパティの間にカンマがないため、構文エラーになります。

予約語を変数名にする

const return = 10;

returnはJavaScriptの予約語なので、変数名として使用できません。

エラーの検出と対策

構文エラーは、多くの場合、実行前に開発ツールが検出してくれます。

  • ESLintを利用する: 構文ミスやコーディングルール違反を事前に検出できます。
  • Visual Studio Codeなどのエディタを利用する: 入力中に構文エラーを表示してくれます。
  • ブラウザの開発者ツールを利用する: Consoleタブでエラー内容や行番号を確認できます。
  • フォーマッターを利用する: Prettierなどを使うと、括弧の対応ミスなどに気付きやすくなります。

ESLintの例

ESLintはJavaScriptで最も広く使われている静的解析ツールの一つです。

例えば、次のようなコードを書いた場合でも、実行前に問題を指摘してくれます。

const message = "Hello"

console.log(message)

設定によっては、セミコロンの有無や未使用変数なども検出できます。

構文エラーを減らすコツ

  • コードを書いたら自動フォーマットを利用する。
  • 括弧や引用符は入力時に対応するものも入力する。
  • 小さな単位で実行して動作を確認する。
  • ESLintなどの静的解析ツールを導入する。
  • エラーメッセージに表示される行番号を確認する。

実際には、エラーメッセージが示す行よりも前の行に原因があることも多いため、周辺のコードも確認すると原因を見つけやすくなります。

まとめ

  • JavaScriptでは「コンパイル時エラー」というより、「実行前に検出される構文エラー」と考えるのが一般的です。
  • SyntaxErrorは、文法が正しくない場合に発生します。
  • ReferenceErrorTypeErrorは、多くの場合は実行時エラーです。
  • Visual Studio CodeやESLintを使うと、構文エラーを実行前に見つけやすくなります。
  • ブラウザの開発者ツールでは、エラー内容や行番号を確認できます。
  • 自動フォーマットや静的解析ツールを活用すると、構文ミスを減らせます。