`void 0` とはどういう意味ですか? [重複] 質問する

`void 0` とはどういう意味ですか? [重複] 質問する

Backbone.js のソースコードを読んでみると、次のことがわかりました。

validObj[attr] = void 0;

とは何ですかvoid 0?ここでそれを使用する目的は何ですか?

ベストアンサー1

どういうvoid 0意味?

void[MDN]は、1 つの引数を取り、常に undefined を返すプレフィックス キーワードです。

console.log(void 0);
console.log(void (0));
console.log(void "hello");
console.log(void (new Date()));
//all will return undefined

それは何の意味があるのですか?

かなり役に立たないように思えますね。常に undefined を返すのであれば、 を使用するだけで何が問題になるのでしょうかundefined?

完璧な世界では、 を安全に使用できるでしょうundefined。これは よりもはるかに単純で理解しやすいからですvoid 0。しかし、これまで気付いたことがなくても、これは完璧な世界ではありません。特に JavaScript に関してはそうです。

問題は、予約語ではないundefinedundefinedこれは実際にはグローバルオブジェクトのプロパティです[wtfjs]つまり、 はundefined許容される変数名なので、自由に新しい値を割り当てることができます。

(function () {

console.log(undefined); // logs "undefined"
var undefined = "new value";
console.log(undefined); // logs "new value"

})();

注: これは、ECMAScript 5 以降をサポートする環境 (つまり、IE 8 以外のすべての環境) では問題になりません。これらの環境では、undefinedグローバル オブジェクトのプロパティが読み取り専用として定義されます (そのため、変数をシャドウできるのはローカル スコープ内のみです)。ただし、この情報は下位互換性のために依然として役立ちます。

(function () {

console.log(window.hasOwnProperty('undefined')); // logs "true"
console.log(window.undefined); // logs "undefined"
console.log(undefined === window.undefined); // logs "true"
var undefined = "new value";
console.log(undefined); // logs "new value"
console.log(undefined === window.undefined); // logs "false"

})();

void一方、 はオーバーライドできません。 は常にundefined を返します。void 0一方、 は、JavaScript が望むものなら何でも設定できます。undefined

具体的になぜですかvoid 0?

なぜ を使用する必要があるのでしょうかvoid 0? の何が特別なのでしょうか? 、、 またはを0簡単に使用できないのでしょうか?1421000000"Hello, world!"

答えは、はい、できますし、同じように機能します。0他の引数の代わりにを渡す唯一の利点は0、短くて慣用的なことです。

なぜこれがまだ関連性があるのでしょうか?

undefinedは、現代の JavaScript 環境では一般的に信頼できますが、 には というささいな利点が 1 つありますvoid 0。それは、短いことです。この違いは、コードを書くときに心配するほどではありませんが、大規模なコード ベースでは、ブラウザに送信されるバイト数を減らすためにundefined、ほとんどのコード縮小ツールが に置き換えるほど大きな違いになる可能性があります。void 0

おすすめ記事