【JavaSript 基础】条件语句和逻辑运算符作为标识符,实现开关的作用
if语句和逻辑与运算符&&
if语句和&&逻辑与运算符将数据类型作为标识符,来实现开关的作用,在实际使用中非常实用。首先来了解一个falsy概念。
falsy
"falsy"是一个JavaScript术语,用于描述在布尔上下文中被视为“false”的值。
在JavaScript中,以下值被视为“falsy”:
- false
- 0
- ''(空字符串)
- null
- undefined
- NaN
真假值的转换
数据类型 | 转换为true的值 | 转换为false的值(falsy) |
---|---|---|
Boolean | true | false |
String | "任何非空字符串" | ""(空字符串) |
Number | 任何非零数字值(包括无穷值) | 0和NaN |
Object | 任何对象(只要对象存在) | null(对象不存在时) |
Undefined | undefined转为false | undefined转为false |
混淆点
-
其中对象Object中除了undefined和null之外(计算为false),所有对象包括空对象{ }都计算为true,所有数组包括空数组[ ]都计算为true
-
字符串String中," "(字符串中一个空格),也会计算为true
MDN的描述
如果需要,作为第一个参数传递的值将转换为布尔值。如果省略或值0,-0,null,false,NaN,undefined,或空字符串(""),该对象具有的初始值false。所有其他值,包括任何对象,空数组([])或字符串"false",都会创建一个初始值为true的对象。
注意不要将基本类型中的布尔值 true 和 false 与值为 true 和 false 的 Boolean 对象弄混了。其值不是undefined或null的任何对象(包括其值为false的布尔对象)在传递给条件语句时都将计算为true。
逻辑运算符 和 空值合并运算符?? 之间的选择(5.10.2023更新)
当使用逻辑运算符(例如||和&&)或条件语句(例如if和while)时,遇到falsy中每种情况都会转为false,有时候这会出现意外。而空值合并运算符??只在左侧的表达式返回null或undefined时才返回右侧的默认值,所以空值合并运算符是更加严格的。
结论:因此,如果您想要更严格的非空判断,建议使用??运算符。
洗尽铅华始见金,褪去浮华归本真