0

リンクがクリックされるのを明白に防止すること (を使用) と、 coffeescript のような多くの JavaScript プリコンパイル済み言語でjavascript:void(0);の定義(ここではとなる) は別として --> 関数は他に何に使用できますか?undefinedundefinedvoid 0void


関連: "javascript:void(0)" とはどういう意味ですか?

便利なリンク:の MDN ページvoid

4

1 に答える 1

5

まず、void関数ではなく演算子です。あなたの質問への答えは、あなたが質問で提供したMDNへのリンクにある説明よりも明確に与えることはできません:

概要

void演算子は、指定された式を評価してから を返しますundefined

...

用途

この演算子を使用すると、副作用を生成する式を、評価される式が必要な場所に挿入できundefinedます。

理論上の使用:

副作用を生じる式の戻り値を変更します。

var i;
i = 0;       // returns 0
void i = 1;  // returns undefined

しかし、この使用法は、ほとんどの状況ではあまり価値がありません。

実用的な用途:

私たちはすでに知っています:

  • ブックマークレットでのナビゲーションをキャンセルする
  • Compare item to undefined- グローバル変数undefinedは変更される可能性があるため (予約語ではない)、値void 0を取得するためのより信頼性の高い方法です。undefined例えば:obj.foo === void 0

その他の用途:

冗長なコンソール出力を防ぐ- JavaScript コンソールでコードを実行したいだけで、興味のない冗長な出力でコンソールを汚染したくない場合に使用します。

明示的undefinedに関数に渡す- 引数を渡さずに関数が呼び出されたかどうか、または引数が次の値を持つ関数に渡されたかどうかを知ると便利ですundefined

function countArguments(a) {
    console.log(a === undefined);
    console.log(arguments.length);
}
countArguments();
countArguments(void 0);

コンソール出力は次のようになります。

真実
0
真実
1

JavaScriptにはこの演算子が必要ですか? おそらくそうではありません。自己呼び出しの匿名関数から同じ機能 (およびそれ以上) を取得できます。

(function(){ /* expression */ })()

しかし、それはそれほど簡潔ではありません。

于 2013-01-30T19:20:50.170 に答える