LoginSignup
14
16

More than 1 year has passed since last update.

JavaScript の undefined と void 0 と

Last updated at Posted at 2014-06-19

とあるライブラリを眺めていて、以下のような関数呼び出しを見つけました。

resetVal(attr, void 0);

void はご存知の方も多いと思いますが、与えられた式を評価して undefined を返す演算子です

通常は内部で undefined 以外の評価結果になるような処理をしつつ、でも結果は undefined
であって欲しい。といったようなケースで使われると思います。
html のアンカータグをクリックしたケースで使われるシーンは昔からよく見かける例です。

でもこの関数呼び出し、以下の書き方じゃダメなのかなと思いました。

resetVal(attr, undefined)

グローバルオブジェクトの undefined プロパティを参照する方法です。

少し調べて以下のことがわかった。

  • グローバルオブジェクトの undefined プロパティは ECMAScript3までは書き込み可
  • 読み込みのみになったのは ECMAScript5 から

結果以下の可能性が捨てきれない

  • グローバルオブジェクトの undefined プロパティが書き換えられていて undefined を返さない可能性がある
  • グローバルもしくは関数内で undefined という名前の変数が定義されてグローバルオブジェクトの undefined を参照しない可能性がある

結論

  • 確実に undefined を渡したい場合は void 演算子を使うのが安全そう。
14
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
16