JavaScript プログラムをより読みやすくメンテナンスしやすくするために!「予約済み識別子」エラーを徹底的に理解しよう!


予約済み識別子とは

予約済み識別子は、JavaScriptがキーワードや組み込み関数などとしてあらかじめ定義している特別な単語です。これらの単語は、プログラム内で自由に使用することはできません。

例:

var let = 10; // エラー:'let' は予約済み識別子です
function if (condition) { // エラー:'if' は予約済み識別子です
}

エラーの解決方法

このエラーを解決するには、予約済み識別子と紛らわしい名前を別の名前に変更する必要があります。例えば、変数 letmyLet に変更したり、関数 ifmyIf に変更したりすることができます。

予約済み識別子のリスト

以下の表は、JavaScriptでよく使用される予約済み識別子のリストです。

予約済み識べ字説明
abstract抽象型を定義するために使用
arguments関数引数へのアクセスに使用
await非同期操作を待機するために使用
boolean真偽値を表すために使用
breakループから抜け出すために使用
byte8ビットの整数値を表すために使用
caseswitch ステートメントで使用
catchエラーハンドラを定義するために使用
char文字を表すために使用
classクラスを定義するために使用
const定数を宣言するために使用
continueループの次のイテレーションに進むために使用
debuggerデバッガを起動するために使用
defaultswitch ステートメントのデフォルトケースを定義するために使用
deleteオブジェクトのプロパティを削除するために使用
dodo-while ループで使用
elseif ステートメントの else 節で使用
enum列挙型を定義するために使用
exportモジュールから値をエクスポートするために使用
extendsクラスを継承するために使用
false偽を表すために使用
finalクラスやメソッドを最終的なものとしてマークするために使用
finallytry-catch ブロックの後で使用
float浮動小数点数を表すために使用
forfor ループで使用
function関数を定義するために使用
gotoラベル付きステートメントにジャンプするために使用
ifif ステートメントで使用
implementsインターフェースを実装するために使用
ininstanceof 演算子で使用
importモジュールから値をインポートするために使用
instanceOfinstanceof 演算子で使用
int整数値を表すために使用
interfaceインターフェースを定義するために使用
let変数を宣言するために使用
long長整数値を表すために使用
nativeネイティブ JavaScript オブジェクトを表すために使用
new新しいオブジェクトを作成するために使用
null空の値を表すために使用
number数値を表すために使用
objectオブジェクトを表すために使用
packageパッケージを定義するために使用
privateクラスメンバを非公開にするために使用
protectedクラスメンバを保護するために使用
publicクラスメンバを公開するために使用
readonly書き込み禁止のプロパティを定義するために使用
return関数から値を返すために使用
short短い整数値を表すために use
static静的メンバを定義するために使用
super基底クラスのメンバにアクセスするために使用
switchswitch ステートメントで使用
synchronized同期化されたコードブロックを定義するために使用
this現在のオブジェクトを参照するために使用
throwエラーをスローするために使用
true真を表すために use
trytry-catch ブロックで使用
typeofオペランドのデータ型を取得するために使用
undefined定義されていない値を表すために使用
var変数を宣言するために使用
void値を持たない関数を定義するために使用
volatile変揮発性のメモリセルを定義するために使用


// エラーが発生するコード
var let = 10;

// 修正後のコード
var myLet = 10;
console.log(myLet); // 10 を出力

この例では、if という予約済み識別子を使用する代わりに、myIf という関数名を使用する方法を示します。

// エラーが発生するコード
function if (condition) {
  // ...
}

// 修正後のコード
function myIf (condition) {
  // ...
}

// 例外処理
if (condition) {
  myIf(condition);
} else {
  // ...
}


このエラーを解決するには、以下の2つの代替方法があります。

変数名/関数名を変更する

最も簡単な方法は、変数名関数名別の名前に変更することです。例えば、予約済みキーワードである let を使用している場合は、myLet_let などの別の名前に変更します。

例:

// エラー: 予約済み識別子を使用しています
var let = 10;

// 修正: 変数名を変更
var myLet = 10;
console.log(myLet); // 10を出力

エスケープシーケンスを使用する

一部の予約済みキーワードについては、エスケープシーケンスを使用して識別子として使用することができます。エスケープシーケンスとは、バックスラッシュ (\) を使用して予約済みキーワードを表す特殊な表記方法です。

例:

// エラー: 予約済み識別子を使用しています
function if (condition) {
  // ...
}

// 修正: エスケープシーケンスを使用
function \`if\` (condition) {
  // ...
}

// 呼び出し例
if (condition) {
  \`if\`(condition);
} else {
  // ...
}
  • エスケープシーケンスを使用すると、コードが読みづらくなる可能性があります。そのため、できるだけ変数名/関数名を変更することを推奨します。
  • エスケープシーケンスは、すべての予約済みキーワードで使用できるわけではありません。使用できるかどうかは、JavaScriptのバージョンによって異なります。
  • 多くのプログラミングエディタには、予約済みキーワードを自動的に検出して警告を表示する機能が備わっています。
  • 予約済みキーワードのリストは、JavaScriptのドキュメントなどで確認することができます。