1. ホーム
  2. javascript

[解決済み] void 0`とはどういう意味ですか?[重複]する

2022-03-18 02:55:50

質問

Backbone.jsのソースコードを読んでいると、こんなことが書いてありました。

validObj[attr] = void 0;

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

どのように解決するのですか?

何をするのか void 0 の意味は?

void [MDN】です。] は、引数を1つ取り、常に undefined .

void 0
void (0)
void "hello"
void (new Date())
//all will return undefined

何が言いたいんだ?

かなり無駄な気がしますよね。もし、常に undefined を使用することの何が問題なのでしょうか? undefined を使用します。

完璧な世界であれば、私たちは安全に undefined よりもはるかにシンプルでわかりやすい。 void 0 . でも、一応、今まで気がつかなかったのですが これは完璧な世界ではありません 特にJavascriptに関しては。

を使用した場合の問題点は undefined は、その undefined は予約語ではありません( は、実際にはグローバルオブジェクトのプロパティである [wtfjs] ). つまり undefined は許される変数名なので、自分の気まぐれで新しい値を代入することができます。

alert(undefined); //alerts "undefined"
var undefined = "new value";
alert(undefined) // alerts "new value"

注:ECMAScript 5 以降をサポートする環境(つまり、実際には IE 8 以外のすべての環境)では、これはもはや問題ではなく、ECMAScript 5 で定義されている undefined プロパティは読み取り専用です (したがって、この変数をシャドウできるのは自分のローカルスコープだけです)。しかし、この情報は後方互換性のためにまだ役に立ちます。

alert(window.hasOwnProperty('undefined')); // alerts "true"
alert(window.undefined); // alerts "undefined"
alert(undefined === window.undefined); // alerts "true"
var undefined = "new value";
alert(undefined); // alerts "new value"
alert(undefined === window.undefined); // alerts "false"

void 一方、オーバーライドはできません。 void 0 意志 常に 戻る undefined . undefined は、ジャバスクリプトさんが決めることであれば、どんなものにもなります。

なぜ void 0 具体的には?

なぜ void 0 ? の何がそんなに特別なのでしょうか? 0 ? 同じように 1 または 42 または 1000000 または "Hello, world!" ?

そして、その答えは、「はい、できます」であり、同じように動作します。を渡すことの唯一の利点は 0 他の引数ではなく 0 は短く、イディオム的である。

なぜ、今でも関係あるのでしょうか?

とはいえ undefined は、最近のJavaScript環境では一般的に信頼できますが、1つだけ些細な利点があります。 void 0 より短いです。この差は、コードを書くときに気にするほどではありませんが、大規模なコードベースでは十分な量になるため、ほとんどのコードミニファイアーでは、この差は undefinedvoid 0 を使用すると、ブラウザに送信されるバイト数を減らすことができます。