if (info && info.code == 0) {}
逻辑分析
1、info 的值检查:
如果 info 是 null、undefined、false 等假值,则 info && 的结果直接为 false,后面的 info.code == 0 不会执行,因此不会报错。
2、info.code 的访问:
如果 info 存在,但没有 code 属性,info.code = undefined。( undefined == 0 会返回 false)
如果 info 存在,info.code = null。( null == 0 会返回 false)
if (info && info.code){}
逻辑分析
1、info 是否存在:
info 为真值时继续检查。
2、info.code 是否为真值
如果 info.code 是 0,则为假值,条件表达式结果为 false。
以下值在条件语句中被认为是 false
:
false
0
""
(空字符串)null
undefined
NaN
if (info && info.code !== undefined) {}
逻辑分析
1、info 是否存在:
info 为真值时继续检查。
2、只要 info.code 存在(包括 0),都会触发