知识卡片
假值边界要显式
内容
JS 只有 false/null/undefined/空字符串/0/NaN 六个值在条件判断中为假值,其余(含字符串”false”和所有对象)都是真值。宽泛真假判断(如 if(x))会把”不存在”“空字符串”“值为零”等不同语义混在一起,显式比较(x===0、x==='')能保留意图。发散:业务代码尤其要区分”没有值”和”值恰好是0或空字符串”,否则产生隐蔽逻辑错误。
参考来源
- 位置:《JavaScript语言精粹(修订版)》第2章《语法 Grammar》"语句"一节
- 结论依据:原文明确列出被当做假的全部取值(false、null、undefined、空字符串、数字0、数字NaN),并说明其他所有值都当做真,这是一份封闭的枚举清单,由此可以推出"假值边界固定但容易与业务语义混淆,需要显式区分"的结论。
- 原始内容:下面列出的值被当做假(falsy):false、null、undefined、空字符串 ' '、数字 0、数字 NaN。其他所有的值都被当做真,包括true、字符串"false",以及所有的对象。