Code Fix

JavaScriptエラー 練習問題 102問(全問無料)

コンパイルエラー・実行時エラー・ロジックの誤りを、空欄補充で直す練習問題です。登録不要でその場で解けます。

エラーメッセージで探す

今出ているエラーメッセージをそのまま貼り付けてください。行番号や変数名が違っていても、エラーの種類が一致すれば見つかります。

エラー難易度種別
undefinedのプロパティ読み取りエラーの原因 #1 初級実行時
undefinedのプロパティ読み取りエラーの原因 #2 初級実行時
undefinedのプロパティ読み取りエラーの原因 #3 初級実行時
ReferenceError: x is not defined の原因と直し方 #1 初級実行時
ReferenceError: x is not defined の原因と直し方 #2 初級実行時
ReferenceError: x is not defined の原因と直し方 #3 初級実行時
括弧の閉じ忘れで出る SyntaxError の原因と直し方 #1 初級コンパイル
括弧の閉じ忘れで出る SyntaxError の原因と直し方 #2 初級コンパイル
括弧の閉じ忘れで出る SyntaxError の原因と直し方 #3 初級コンパイル
配列の範囲外アクセスがエラーにならずundefinedになる #1 初級ロジック
配列の範囲外アクセスがエラーにならずundefinedになる #2 初級ロジック
配列の範囲外アクセスがエラーにならずundefinedになる #3 初級ロジック
== が意図しない型変換で真になってしまう(===との違い) #1 初級ロジック
== が意図しない型変換で真になってしまう(===との違い) #2 初級ロジック
== が意図しない型変換で真になってしまう(===との違い) #3 初級ロジック
TypeError: x is not a function の原因と直し方 #1 初級実行時
TypeError: x is not a function の原因と直し方 #2 初級実行時
TypeError: x is not a function の原因と直し方 #3 初級実行時
カンマの付け忘れで出る SyntaxError の原因と直し方 #1 初級コンパイル
カンマの付け忘れで出る SyntaxError の原因と直し方 #2 初級コンパイル
カンマの付け忘れで出る SyntaxError の原因と直し方 #3 初級コンパイル
const宣言で初期値を書き忘れた原因と直し方 #1 初級コンパイル
const宣言で初期値を書き忘れた原因と直し方 #2 初級コンパイル
const宣言で初期値を書き忘れた原因と直し方 #3 初級コンパイル
同じ変数名を2回宣言したエラーの原因と直し方 #1 初級コンパイル
同じ変数名を2回宣言したエラーの原因と直し方 #2 初級コンパイル
同じ変数名を2回宣言したエラーの原因と直し方 #3 初級コンパイル
"合計: " + a + b が期待した数値の合計にならない理由 #1 初級ロジック
"合計: " + a + b が期待した数値の合計にならない理由 #2 初級ロジック
"合計: " + a + b が期待した数値の合計にならない理由 #3 初級ロジック
関数がreturn文を書き忘れてundefinedを返してしまう #1 初級ロジック
関数がreturn文を書き忘れてundefinedを返してしまう #2 初級ロジック
関数がreturn文を書き忘れてundefinedを返してしまう #3 初級ロジック
push()の戻り値は追加後の配列ではなく新しい要素数 #1 初級ロジック
push()の戻り値は追加後の配列ではなく新しい要素数 #2 初級ロジック
push()の戻り値は追加後の配列ではなく新しい要素数 #3 初級ロジック
文字列同士の + が連結になる理由 #1 初級ロジック
文字列同士の + が連結になる理由 #2 初級ロジック
文字列同士の + が連結になる理由 #3 初級ロジック
length はメソッドでなくプロパティという原因 #1 初級実行時
length はメソッドでなくプロパティという原因 #2 初級実行時
length はメソッドでなくプロパティという原因 #3 初級実行時
NaNを===やswitchで判定できない理由と直し方 #1 中級ロジック
NaNを===やswitchで判定できない理由と直し方 #2 中級ロジック
NaNを===やswitchで判定できない理由と直し方 #3 中級ロジック
メソッドを変数に代入・受け渡しするとthisが失われる #1 中級ロジック
メソッドを変数に代入・受け渡しするとthisが失われる #2 中級ロジック
メソッドを変数に代入・受け渡しするとthisが失われる #3 中級ロジック
['1','2','3'].map(parseInt)が[1, NaN, NaN]になる理由 #1 中級ロジック
['1','2','3'].map(parseInt)が[1, NaN, NaN]になる理由 #2 中級ロジック
['1','2','3'].map(parseInt)が[1, NaN, NaN]になる理由 #3 中級ロジック
スプレッド構文{ ...obj }はネストした値までは複製しない(浅いコピー) #1 中級ロジック
スプレッド構文{ ...obj }はネストした値までは複製しない(浅いコピー) #2 中級ロジック
スプレッド構文{ ...obj }はネストした値までは複製しない(浅いコピー) #3 中級ロジック
Array.prototype.sort()が数値を文字列として並べ替える理由 #1 中級ロジック
Array.prototype.sort()が数値を文字列として並べ替える理由 #2 中級ロジック
Array.prototype.sort()が数値を文字列として並べ替える理由 #3 中級ロジック
0.1 + 0.2 === 0.3 がfalseになる理由と直し方 #1 中級ロジック
0.1 + 0.2 === 0.3 がfalseになる理由と直し方 #2 中級ロジック
0.1 + 0.2 === 0.3 がfalseになる理由と直し方 #3 中級ロジック
typeof null === 'object' の罠 #1 中級実行時
typeof null === 'object' の罠 #2 中級実行時
typeof null === 'object' の罠 #3 中級実行時
forループのvarをletに変えないとコールバックが同じ値を指す #1 中級ロジック
forループのvarをletに変えないとコールバックが同じ値を指す #2 中級ロジック
forループのvarをletに変えないとコールバックが同じ値を指す #3 中級ロジック
同じ内容のオブジェクト同士が === でfalseになる理由 #1 中級ロジック
同じ内容のオブジェクト同士が === でfalseになる理由 #2 中級ロジック
同じ内容のオブジェクト同士が === でfalseになる理由 #3 中級ロジック
配列の分割代入で要素が足りないとundefinedになる(デフォルト値の付け方) #1 中級ロジック
配列の分割代入で要素が足りないとundefinedになる(デフォルト値の付け方) #2 中級ロジック
配列の分割代入で要素が足りないとundefinedになる(デフォルト値の付け方) #3 中級ロジック
JSON.parse()が投げるSyntaxErrorは実行時エラーである #1 中級実行時
JSON.parse()が投げるSyntaxErrorは実行時エラーである #2 中級実行時
JSON.parse()が投げるSyntaxErrorは実行時エラーである #3 中級実行時
オプショナルチェイニング(?.)でnull/undefinedアクセスのエラーを防ぐ #1 中級実行時
オプショナルチェイニング(?.)でnull/undefinedアクセスのエラーを防ぐ #2 中級実行時
オプショナルチェイニング(?.)でnull/undefinedアクセスのエラーを防ぐ #3 中級実行時
デフォルト引数はnullには適用されない(undefinedのときだけ) #1 上級ロジック
デフォルト引数はnullには適用されない(undefinedのときだけ) #2 上級ロジック
デフォルト引数はnullには適用されない(undefinedのときだけ) #3 上級ロジック
constへの再代入エラーの原因と直し方 #1 上級実行時
constへの再代入エラーの原因と直し方 #2 上級実行時
constへの再代入エラーの原因と直し方 #3 上級実行時
sort()やreverse()は新しい配列を返さず元の配列を書き換える #1 上級ロジック
sort()やreverse()は新しい配列を返さず元の配列を書き換える #2 上級ロジック
sort()やreverse()は新しい配列を返さず元の配列を書き換える #3 上級ロジック
Object.freeze()は1階層しか凍結しない(浅い凍結) #1 上級ロジック
Object.freeze()は1階層しか凍結しない(浅い凍結) #2 上級ロジック
Object.freeze()は1階層しか凍結しない(浅い凍結) #3 上級ロジック
プライベートフィールド外部アクセスの構文エラー原因 #1 上級コンパイル
プライベートフィールド外部アクセスの構文エラー原因 #2 上級コンパイル
プライベートフィールド外部アクセスの構文エラー原因 #3 上級コンパイル
インスタンス全体で共有したい値をstaticにし忘れる #1 上級ロジック
インスタンス全体で共有したい値をstaticにし忘れる #2 上級ロジック
インスタンス全体で共有したい値をstaticにし忘れる #3 上級実行時
オブジェクトのキーは数値でも文字列に変換される(1と"1"は同じキー) #1 上級ロジック
オブジェクトのキーは数値でも文字列に変換される(1と"1"は同じキー) #2 上級ロジック
オブジェクトのキーは数値でも文字列に変換される(1と"1"は同じキー) #3 上級ロジック
indexOf(NaN)が常に-1を返し、NaNを見つけられない理由 #1 上級ロジック
indexOf(NaN)が常に-1を返し、NaNを見つけられない理由 #2 上級ロジック
indexOf(NaN)が常に-1を返し、NaNを見つけられない理由 #3 上級ロジック
広告
広告スロット(未設定)

出題モード

まとめて解きたいときはこちら

このモードで始める

選んだモードは次の問題への移動にも適用されます。記録は端末内にのみ保存されます。

エラーの種類について

JavaScriptのエラーは大きく3種類に分かれます。構文エラー(SyntaxError)はコードを解析する段階で検出されるもので、実行が一切始まりません。実行時エラーは構文としては正しいものの、実行中に投げられる例外で、ReferenceError(未定義の変数・関数)やTypeError(存在しないプロパティやメソッドへのアクセス)が代表例です。JavaScriptでは変数名のスペルミスも実行時エラーになる点がJavaやC#と違います。ロジックの誤りはどちらのエラーも出ませんが結果が期待と違うもので、==と===の混同やNaNの扱いが典型です。

最も発見が遅れるのは3つ目です。このサイトではロジックの誤りも問題に含めており、コンソール表示が赤ではなく琥珀色になります。

初級から順に解く

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