JavaScript - 予約語を変数として使うとどうなる?

JavaScriptの予約語変数の名前(識別子)として使えませんが、

試しに、予約語、将来的な予約語、組み込みオブジェクトを変数名として使ってみると

どうなるのかを実験してみました。

JavaScriptの予約語についてはこちら

「if」を変数名に使ってみる

予約語の中でもメジャーなキーワード「if」を変数名として使ってみましょう。


var if = 0;

これを実行するとどうなるでしょうか?

実行結果

予約語ですから、エラーがでるのは当然ですが、

各ブラウザでのエラーメッセージは次の通りです。

Firefox


SyntaxError: missing variable name

Chrome


Uncaught SyntaxError: Unexpected token if

Opera


Uncaught SyntaxError: Unexpected token if

将来的な予約語「private」を変数名に使ってみる

「private」は現時点では予約語ではなく、将来的に予約語となる可能性があるキーワードです。

では「private」を変数名として使ってみましょう。


var private = 0;

console.log(private);

実行結果

Firfox、Chrome、Operaの各ブラウザで正常に実行され、 console.log(private)も「0」と表示されました。

現時点では使えますが、将来的に予約語となった時点で困りますから 使用しない方がいいでしょう。

組み込みオブジェクト「Math」を変数名に使ってみる

数値計算で使う組み込みオブジェクトの「Math」を変数名として使ってみましょう。



console.log(Math.PI);

console.log(Math.sqrt(64));

var Math = 0;

console.log(Math);

console.log(Math.PI);

console.log(Math.sqrt(64));

実行結果

Firefox、Chrome、Operaの各ブラウザで実行したところ、 (エラーメッセージは若干異なりますが)いずれも次のような結果となりました。

console.log(Math.PI);  // 3.141592653589793

console.log(Math.sqrt(64));  // 8

var Math = 0;

console.log(Math);  // 0

console.log(Math.PI);  // undefined

console.log(Math.sqrt(64));  // Uncaught TypeError: Math.sqrt is not a function

Mathに「0」を代入した後に、「Math.PI」を参照すると「undefined」となり、 「Math.sqrt(64)」の時点でエラーとなりました。

「Math」を変数名に使うことは出来るようですが、もちろん、使うのはやめましょう。

まとめ

・予約語は変数名として使用した時点でエラーとなります。

・将来的な予約語は変数名として使えますが、使わない方がいいでしょう。

・組み込みオブジェクトも変数名として使えましたが、使うのはやめましょう。