ちょっと前に、株式会社LIGのブログでundefinedはただのグローバル変数だからvoid 0を使うほうがよいみたいな記事がありました。
いろいろ調べてみると、それだけが理由ではないように思えたので、そこらへんをまとめてみました。
1行でまとめると次のようになります。
undefinedとの比較判定には、やっぱりvoid 0を使うこと (ほとんどのブラウザで最速だから)
もうすこし細かい話をすると、
- ECMAScript 5では
undefinedに上書きできない- グローバルオブジェクトの
undefinedのプロパティ属性[[Writable]]がfalseのため
- グローバルオブジェクトの
みたいな感じです。