การกำหนดตรรกะลอจิกโซลูชัน ES2020 +
ผู้ประกอบการใหม่กำลังถูกเพิ่มเข้าไปในเบราว์เซอร์, ??=
, และ||=
&&=
โพสต์นี้จะมุ่งเน้น??=
โพสต์นี้จะมุ่งเน้นไปที่
นี้จะตรวจสอบว่าด้านซ้ายไม่ได้กำหนดหรือเป็นโมฆะการลัดวงจรถ้ากำหนดไว้แล้ว ถ้าไม่ถูกต้องด้านขวาจะถูกกำหนดให้กับตัวแปรด้านซ้าย
วิธีเปรียบเทียบ
// 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 - .03%
?? = เอกสาร Mozilla
|| = เอกสาร Mozilla
&& = เอกสารประกอบ Mozilla