15
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

void(0)とundefinedの使い分け

Posted at

Vueのソースコードを読んでいるとこんな箇所があった。

var createEmptyVNode = function (text) {
  if ( text === void 0 ) text = '';

  var node = new VNode();
  node.text = text;
  node.isComment = true;
  return node
};

この2行目の条件文のところで登場する void 0
これまでふわっとした理解だったのでおさらいした。

void expression / void(expression)

voidはjavascript組み込みの演算子(関数ではない)で、
与えられた式が何であろうとundefinedを返す。

この演算子は、「戻り値が undefined であってほしい場所に、それ以外の戻り値を持つ式を挿入したい場合」に有用です。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/void

とのことだけど、実際はundefinedの代わりとして使われることが多数である。

なぜundefinedの代わりに使うのか?

jsではundefinedは値であり、すなわち上書きができる。そのため代わりとして、voidが使われる。

example
console.log(a === undefined) // true
console.log(a === void 0)    // true

// undefinedをうわがく
var undefined = 100

console.log(a === undefined) // false
console.log(a === void 0)    // true

なるほど。

NOTICE

が、今どきのブラウザではもう書き込み不可なので安心。undefined使ったほうがわかりやすいのでそっちを使おう。

モダンブラウザ (JavaScript 1.8.5 / Firefox 4 以降) での undefined は、ECMAScript 5 仕様により、設定不可、書込不可のプロパティとなります。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/undefined

ref

15
10
1

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
15
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?