【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时才返回右侧的默认值,所以空值合并运算符是更加严格的。

结论:因此,如果您想要更严格的非空判断,建议使用??运算符。

posted @ 2022-04-05 21:52  wanglei1900  阅读(180)  评论(0编辑  收藏  举报