JS中两种假值检测方法:两段语句功能是否完全一致?
两段JavaScript代码功能是否完全相同?
这两段代码的功能完全一致,你可以放心使用第二种更简洁的写法。
逻辑等价性分析
两段代码都是实现同一个逻辑:如果y是真值,就把y赋值给x;如果y是假值,就把0赋值给x。
- 第一段三元表达式
y ? y : 0:先判断y的布尔结果,为真返回y,否则返回0。 - 第二段逻辑或表达式
y || 0:遵循JS逻辑或的短路特性,若y转换为布尔值为真,直接返回y;若为假,则返回右侧的0。
假值场景验证
对于JavaScript中所有假值(false、0、''、null、undefined、NaN),两段代码的行为完全一致:
- 当
y = false:两段代码都返回0 - 当
y = '':两段代码都返回0 - 当
y = null:两段代码都返回0
所以在任何场景下,第二种写法var x = y || 0;都可以替代第一种,且在变量名较长或表达式复杂时,能让代码更简洁易读。
内容的提问来源于stack exchange,提问作者Russell Chisholm
相关产品推荐
相关产品推荐

