IT戦記 このページをアンテナに追加 RSSフィード Twitter

2006-10-18

JavaScript で undefined って予約語じゃなかったんだ!!

変数が undefined かを確認するとき、以下のようなコードを使うのをよく見かけます

if(typeof obj == 'undefined')

個人的にはこれでいいじゃんとか思ってたんです

if(obj == undefined)

でも、偶然発見してしまった。。 undefined って変数だったんすね。。

undefined = 1;
alert(undefined); // 1

でも、null予約語なんだー。

なんか、釈然としないぞー!うーん!

kazuhookukazuhooku 2006/10/18 07:17 undefined が予約語じゃないのは、ECMA262 (JavaScript/1.3) で追加された仕様だからだと思います。
後から予約語を追加すると、既存のコードが動かなくなる可能性があるので、グローバルオブジェクトのプロパティとしたのでしょう。書換可能なのも、同様の理由からではないでしょうか。

ちなみに、typeof(x) == ’undefined’ は、 JavaScript/1.1 以降で使うことができると思います。

amachangamachang 2006/10/18 13:27 なるほど。下位互換のためだったんですね。納得しました。ありがとうございます。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。