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」を変数名に使うことは出来るようですが、もちろん、使うのはやめましょう。
まとめ
・予約語は変数名として使用した時点でエラーとなります。
・将来的な予約語は変数名として使えますが、使わない方がいいでしょう。
・組み込みオブジェクトも変数名として使えましたが、使うのはやめましょう。