[解決済み] を使うべきですか?(論理和) vs || (論理和)?
質問
関連項目
JavaScriptに"Null合体演算子はありますか?
- JavaScriptには現在
??
演算子があり、より頻繁に使用されているのを見かけます。以前はほとんどの JavaScript コードで
||
.
let userAge = null
// These values will be the same.
let age1 = userAge || 21
let age2 = userAge ?? 21
どのような状況で
??
と
||
は異なる動作をするのでしょうか?
どのように解決するのですか?
OR演算子
||
は、左が
ファルシー
の場合、右の値を使いますが、nullish の合体演算子
??
は、左が
null
または
undefined
.
これらの演算子は、最初の値がない場合にデフォルト値を提供するためによく使用されます。
しかし、OR 演算子
||
は、左の値に
""
または
0
または
false
(これらは
ファルシーな値
)
:
console.log(12 || "not found") // 12
console.log(0 || "not found") // "not found"
console.log("jane" || "not found") // "jane"
console.log("" || "not found") // "not found"
console.log(true || "not found") // true
console.log(false || "not found") // "not found"
console.log(undefined || "not found") // "not found"
console.log(null || "not found") // "not found"
多くの場合、left が
null
または
undefined
. それが、ヌルい合体演算子である
??
はそのためのものです。
console.log(12 ?? "not found") // 12
console.log(0 ?? "not found") // 0
console.log("jane" ?? "not found") // "jane"
console.log("" ?? "not found") // ""
console.log(true ?? "not found") // true
console.log(false ?? "not found") // false
console.log(undefined ?? "not found") // "not found"
console.log(null ?? "not found") // "not found"
一方
??
演算子は
現在の LTS バージョンの Node
(v10 and v12)では利用できませんが、TypeScriptやNodeのいくつかのバージョンでは利用できます。
は
??
演算子が追加され
TypeScript 3.7 では
に戻って、2019年11月に
そしてさらに最近では
??
演算子は
が ES2020 に含まれています。
という、Node14(2020年4月リリース)でサポートされています。
の場合、nullishの合体演算子
??
がサポートされている場合、私は通常これを OR 演算子の代わりに使います。
||
(を使います(そうしない正当な理由がある場合を除く)。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] JavaScriptで二重引用符と単一引用符はいつ使うべきですか?
-
[解決済み] HTMLマークアップのどこに<script>タグを記述すればよいですか?
-
[解決済み] varキーワードの目的と、どのような場合に使用する(または省略する)べきですか?
-
[解決済み] JavaScriptに「NULL合体」演算子はありますか?
-
[解決済み] encodeURI / encodeURIComponentの代わりにescapeを使用するのはどのような場合ですか?
-
[解決済み] ES6インポートで中括弧を使用するのはどのような場合ですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み] Javascript の parseInt() で先頭のゼロを削除する。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptに「NULL合体」演算子はありますか?
-
[解決済み】JavaScriptのOR(||)変数割り当ての説明
-
[解決済み] [解答】x = x || y という構成は何を意味するのか?
-
[解決済み】switch文からreturn outするのはbreakを使うより良い方法と考えられるか?[クローズド]
-
[解決済み] モバイルWeb HTML5フレームワークの選び方【終了しました
-
[解決済み] JavaScriptを使用してHTML要素に属性を追加/更新するには?
-
[解決済み] JavaScriptで:hoverのCSSプロパティを変更する
-
[解決済み] ECMAScriptとは?
-
[解決済み] Node.jsのES6クラスをrequireで作る
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行