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が使われる。
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