JavaScriptのvoid演算子のポイントは何ですか?
質問
私は、何人かの人が
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
.
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み] JavaScriptに「NULL合体」演算子はありますか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み] Promise : then vs then + catch [重複].
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] JavaScript で範囲を作成する - 奇妙な構文
-
[解決済み] チェックボックスが選択されているかどうかを確認するjQuery
-
[解決済み] TypeScriptのdeclare classとinterfaceの違いとは?
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] ECMAScriptとは?
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] HTML要素にスクロールバーがあるかどうかをチェックする
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法