1. ホーム
  2. javascript

JavaScriptのvoid演算子のポイントは何ですか?

2023-11-01 22:18:56

質問

私は、何人かの人が void 演算子を使用している人を見かけました。また、これを href の属性があります。 javascript:void(0) よりも良いとは思えません。 javascript:;

では、このように void 演算子を使う正当な理由は何でしょうか?

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

JavaScriptでは void 演算子は明示的に未定義を返すために使用されます。単項演算子であり、1つのオペランドしか使用することができません。単独で、あるいは括弧を付けて、以下のように使用することができます。

void expression;
void(expression);

いくつかの例を見てみましょう。

void 0; //returns undefined
void(1); //returns undefined

void 'hello'; //undefined
void {}; //undefined
void []; //undefined

void myFunction(); 
void(myFunction());

を返すのではなく、未定義を返すために特別なキーワードが必要なのはなぜか、と問われれば、それは単に undefined を返す代わりに、未定義を返すために特別なキーワードが必要なのかというと、その理由は ES5 以前ではグローバル変数に undefined のような感じで、グローバル変数に名前を付けることができたからです。 var undefined = "hello" または var undefined = 23 という識別子があり、ほとんどのブラウザがそれを受け入れるでしょう。 undefined は実際に未定義であることが約束されているわけではありません¹。そのため 実際 未定義の値を返すために void 演算子が使われています/使われていました。しかし、その演算子はあまり一般的ではなく、めったに使用されません。

voidを使った関数の例を見てみましょう。

//just a normal function
function test() {
  console.log('hello');
  return 2;
}

//lets call it
console.log(test()); //output is hello followed by 2

//now lets try with void
console.log(void test()); //output is hello followed by undefined

void 関数からの戻り値を破棄し、明示的にundefinedを返します。

私のチュートリアルの投稿からもっと読むことができます。 https://josephkhan.me/the-javascript-void-operator/

¹ ECMAScript 5 以降では、グローバル変数 undefined は未定義であることが保証されています ( ECMA-262 5th Ed. , § 15.1.1.3), しかし、内部スコープ内の変数の名前が undefined .