[解決済み] JavaScriptに「NULL合体」演算子はありますか?
2022-03-19 23:32:48
質問
JavascriptにNULL合体演算子はありますか?
例えば、C#では、こんなことができます。
String someString = null;
var whatIWant = someString ?? "Cookies!";
Javascriptで考えられる最も良い近似は、条件演算子を使うことです。
var someString = null;
var whatIWant = someString ? someString : 'Cookies!';
IMHOでは、sorta ickyです。もっといい方法はないでしょうか?
解決方法は?
更新情報
JavaScript が
nullish合体演算子 (??)
. これは、左辺のオペランドが次のような場合、右辺のオペランドを返します。
null
または
undefined
それ以外の場合は、左辺のオペランドを返します。
古い答え
互換性をご確認の上、ご利用ください。
C# の null 合体演算子 (
??
) は、論理 OR (
||
):
var whatIWant = someString || "Cookies!";
C#と動作が一致しない場合もありますが(以下で説明します)、これはJavaScriptでデフォルト/代替値を割り当てる一般的で簡潔な方法です。
明確化
最初のオペランドの型に関係なく、ブール型にキャストした結果が
false
この場合、2番目のオペランドが使用されます。以下のすべてのケースに注意してください。
alert(Boolean(null)); // false
alert(Boolean(undefined)); // false
alert(Boolean(0)); // false
alert(Boolean("")); // false
alert(Boolean("false")); // true -- gotcha! :)
ということになります。
var whatIWant = null || new ShinyObject(); // is a new shiny object
var whatIWant = undefined || "well defined"; // is "well defined"
var whatIWant = 0 || 42; // is 42
var whatIWant = "" || "a million bucks"; // is "a million bucks"
var whatIWant = "false" || "no way"; // is "false"
関連
-
Vueの「データを聴く」原則を解説
-
[解決済み】 env: node: macにそのようなファイルやディレクトリはありません
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
fetch ネットワークリクエストラッパーの説明例
-
要素ツリー制御によるvueTreeテーブル
-
vueディレクティブv-bindの使用と注意点
-
VUEグローバルフィルターの概念と留意点、基本的な使い方
-
vueのプロジェクトでモックを使用する方法を知っていますか?
-
[解決済み】React Nativeアプリをターミナルから実行するとエラーが発生する(iOS)
-
[解決済み] Web API エラー - このリクエストはブロックされました; コンテンツは HTTPS で提供されなければなりません
-
[解決済み】ExpressJS - throw er Unhandled errorイベント
-
[解決済み】 Uncaught TypeError : undefined のプロパティ 'replace' を読み取れない In Grid
-
JavaScriptのgetElementById()メソッド入門