論理的な無効な割り当て、ES2020 +ソリューション
新事業者は、現在、ブラウザに追加されている??=
、||=
と&&=
。この投稿はに焦点を当て??=
ます。
これは、左側が未定義かnullかをチェックし、すでに定義されている場合は短絡します。そうでない場合、右側が左側の変数に割り当てられます。
メソッドの比較
// Using ??=
name ??= "Dave"
// Previously, ES2020
name = name ?? "Dave"
// Before that (not equivalent, but commonly used)
name = name || "Dave" // name ||= "Dave"
基本的な例
let a // undefined
let b = null
let c = false
a ??= true // true
b ??= true // true
c ??= true // false
// Equivalent to
a = a ?? true
オブジェクト/配列の例
let x = ["foo"]
let y = { foo: "fizz" }
x[0] ??= "bar" // "foo"
x[1] ??= "bar" // "bar"
y.foo ??= "buzz" // "fizz"
y.bar ??= "buzz" // "buzz"
x // Array [ "foo", "bar" ]
y // Object { foo: "fizz", bar: "buzz" }
?? = 2020年7月のブラウザーサポート -.03%
?? = Mozillaドキュメント
|| = Mozillaドキュメント
&& = Mozillaドキュメント