JavaScript プログラムをより読みやすくメンテナンスしやすくするために!「予約済み識別子」エラーを徹底的に理解しよう!
予約済み識別子とは
予約済み識別子は、JavaScriptがキーワードや組み込み関数などとしてあらかじめ定義している特別な単語です。これらの単語は、プログラム内で自由に使用することはできません。
例:
var let = 10; // エラー:'let' は予約済み識別子です
function if (condition) { // エラー:'if' は予約済み識別子です
}
エラーの解決方法
このエラーを解決するには、予約済み識別子と紛らわしい名前を別の名前に変更する必要があります。例えば、変数 let
を myLet
に変更したり、関数 if
を myIf
に変更したりすることができます。
予約済み識別子のリスト
以下の表は、JavaScriptでよく使用される予約済み識別子のリストです。
予約済み識べ字 | 説明 |
---|---|
abstract | 抽象型を定義するために使用 |
arguments | 関数引数へのアクセスに使用 |
await | 非同期操作を待機するために使用 |
boolean | 真偽値を表すために使用 |
break | ループから抜け出すために使用 |
byte | 8ビットの整数値を表すために使用 |
case | switch ステートメントで使用 |
catch | エラーハンドラを定義するために使用 |
char | 文字を表すために使用 |
class | クラスを定義するために使用 |
const | 定数を宣言するために使用 |
continue | ループの次のイテレーションに進むために使用 |
debugger | デバッガを起動するために使用 |
default | switch ステートメントのデフォルトケースを定義するために使用 |
delete | オブジェクトのプロパティを削除するために使用 |
do | do-while ループで使用 |
else | if ステートメントの else 節で使用 |
enum | 列挙型を定義するために使用 |
export | モジュールから値をエクスポートするために使用 |
extends | クラスを継承するために使用 |
false | 偽を表すために使用 |
final | クラスやメソッドを最終的なものとしてマークするために使用 |
finally | try-catch ブロックの後で使用 |
float | 浮動小数点数を表すために使用 |
for | for ループで使用 |
function | 関数を定義するために使用 |
goto | ラベル付きステートメントにジャンプするために使用 |
if | if ステートメントで使用 |
implements | インターフェースを実装するために使用 |
in | instanceof 演算子で使用 |
import | モジュールから値をインポートするために使用 |
instanceOf | instanceof 演算子で使用 |
int | 整数値を表すために使用 |
interface | インターフェースを定義するために使用 |
let | 変数を宣言するために使用 |
long | 長整数値を表すために使用 |
native | ネイティブ JavaScript オブジェクトを表すために使用 |
new | 新しいオブジェクトを作成するために使用 |
null | 空の値を表すために使用 |
number | 数値を表すために使用 |
object | オブジェクトを表すために使用 |
package | パッケージを定義するために使用 |
private | クラスメンバを非公開にするために使用 |
protected | クラスメンバを保護するために使用 |
public | クラスメンバを公開するために使用 |
readonly | 書き込み禁止のプロパティを定義するために使用 |
return | 関数から値を返すために使用 |
short | 短い整数値を表すために use |
static | 静的メンバを定義するために使用 |
super | 基底クラスのメンバにアクセスするために使用 |
switch | switch ステートメントで使用 |
synchronized | 同期化されたコードブロックを定義するために使用 |
this | 現在のオブジェクトを参照するために使用 |
throw | エラーをスローするために使用 |
true | 真を表すために use |
try | try-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のドキュメントなどで確認することができます。