运算符进阶
|| 默认参数
如果 text 的值为假值,则分配默认值
传入的值被隐式转换,flase的话,就输出默认值
function logInput(input) {
console.log(input || "默认值");
}
logInput(null) // 默认值
logInput(NaN) // 默认值
logInput(undefined) // 默认值
logInput() // 默认值
logInput(0) // 默认值
logInput(1) // 1
logInput("") // 默认值
logInput(" ") // " "
logInput(true) // true
logInput(false) // 默认值1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
input | "默认值" 会怎样呢?
function logInput(input) {
// 如果 input 为 空 、 undefined 或 null,则输出 "默认值"
console.log(input | "默认值");
}
logInput(null) // 0
logInput(NaN) // 0
logInput(undefined) // 0
logInput() // 0
logInput(0) // 0
logInput(1) // 1
logInput("") // 0
logInput(" ") // 0
logInput(true) // 1
logInput(false) // 01
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
?? 空值合并运算符
处理 null 或 undefined ,非常好用!
给一个变量,可能未定义或为空,分配一个默认值:
function logInput(input) {
// 如果 input 为 空 、 undefined 或 null,则输出 "默认值"
console.log(input ?? "默认值");
}
logInput() // 默认值
logInput(undefined)// 默认值
logInput(null) // 默认值
logInput(NaN) // NaN
logInput(0) // 0
logInput(1) // 1
logInput("") // ""
logInput(" ") // ""
logInput(true) // true
logInput(false) // false1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
?. 可选链
可选链(?.)是一个强大的特性,用于防止在访问对象的嵌套属性或方法时出现错误。
它允许我们优雅地处理某些属性或方法可能未定义或为空的情况。
通过使用可选链,可以避免冗长的 if 语句,编写出更简洁、更健壮的代码。
假设我们有一个可能包含多层嵌套属性的对象:
let user = {
name: "张三",
contact: {
email: "zhangsan@example.com",
phone: null
}
};1
2
3
4
5
6
7
2
3
4
5
6
7
在没有可选链的情况下,如果我们想安全地访问用户的电话号码,我们可能需要进行多次检查以避免错误:
let phone = user && user.contact && user.contact.phone;1
但是通过使用可选链,我们可以更简洁地实现相同的目的:
let phone = user?.contact?.phone;1
这样,如果 user 或 user.contact 中的任何一个是 undefined 或 null,则 phone 将安全地被赋值为 undefined,而不会抛出错误。这种方法让代码更加简洁,也更加健壮。