链判断运算符 ?.
const message = ( data && data.result && data.result.state && data.result.state.message ) || ""
const message = data?.result?.state?.message || ""
const code = state ? state.code : ""
a?.b
a == null ? undefined : a.b
a?.[x]
a == null ? undefined : a[x]
a?.b()
a == null ? undefined : a.b()
a?.()
a == null ? undefined : a()
Null 判断运算符 ||、??
- 如果某个属性的值是
null或undefined,有时候需要为它们指定默认值
- 常见做法是通过
||运算符指定默认值,但是属性的值如果为空字符串或false或0,默认值也会生效,如下
const value = data.value || "123"
- 通过
??运算符,只有值为null或undefined时,才会返回右侧的值
const value = data.value ?? "123"
逻辑赋值运算符 ||=、&&=、??=
x ||= y
x || (x = y)
x &&= y
x && (x = y)
x ??= y
x ?? (x = y)
user.id = user.id || 1;
user.id ||= 1;
let user = {
id: 0
}
user.id ||= 1
console.log(user.id)
let user = {
id: 9
}
user.id ||= 1
console.log(user.id)
let user = {
id: 0
}
user.id &&= 1
console.log(user.id)
let user = {
id: 9
}
user.id &&= 1
console.log(user.id)
let user = {
id: 0
}
user.id ??= 1
console.log(user.id)
let user = {
id: 9
}
user.id ??= 1
console.log(user.id)
let user = {
id: null
}
user.id ??= 1
console.log(user.id)
逻辑运算符
逻辑位运算符
位移运算符