1. ?? 空值合并运算符 (Nullish Coalescing Operator)
作用:当左侧的操作数为null或undefined时,返回右侧的操作数,否则返回左侧的操作数。
示例:
consta=null??'default';// a = 'default'constb=undefined??'default';// b = 'default'constc=0??'default';// c = 0constd=false??'default';// d = falseconste=''??'default';// e = ''注意:只有左侧为null或undefined时才会返回右侧,其他假值(如0、false、‘’)不会触发。
2. ?: 三元运算符 (Ternary Operator)
作用:条件运算符,是if…else的简写形式。语法为:condition ? expr1 : expr2。如果condition为真,则返回expr1,否则返回expr2。
示例:
constage=20;conststatus=age>=18?'成人':'未成年';// status = '成人'注意:这里判断的是condition的真假(即布尔值转换)。假值包括:false、0、‘’、null、undefined、NaN。
3. if() 语句
作用:用于根据条件执行代码块。它可以包含else和else if分支。
示例:
letmessage;if(age>=18){message='成人';}else{message='未成年';}注意:if()语句是控制流语句,不直接返回值(除非在函数中通过return返回)。它根据条件的真假执行不同的代码块。
区别总结
| 特性 | ?? | ?: | if() |
|---|---|---|---|
| 类型 | 运算符 | 运算符 | 语句 |
| 返回值 | 返回一个值 | 返回一个值 | 不返回值(用于控制流程) |
| 判断依据 | 仅判断null/undefined | 判断真值/假值 | 判断真值/假值 |
| 用途 | 提供默认值 | 条件赋值 | 条件执行代码 |