如果想为一个变量赋默认值,通常的做法是使用逻辑或运算符 || :
然而,由于 || 是一个布尔逻辑运算符,左侧的操作数会被强制转换成布尔值用于求值。任何假值(0, '', NaN, null, undefined)都不会被返回。这导致如果你使用0,''或NaN作为有效值,就会出现不可预料的后果。
function showTemp(temp) {
  // 针对5种情况都是未采集 '' undefined 0 null NAN
  document.getElementById('temp').innerHTML = temp || '未采集';
}
上面的示例,我们需要展示某一天的采集温度,如果温度temperature 这个变量是null,那么显示『未采集』, 使用了||后,显然不正确,如果温度是0,也会变成『未采集』
正确的做法:采用空值合并运算符
空值合并运算符(??)是一个逻辑运算符,当左侧的操作数为 null 或者 undefined 时,返回其右侧操作数,否则返回左侧操作数。
function showTemp(temp) {
  // 针对左边表达式的值如果是null undefined 才会设置成右边的默认值
  // (null || undefined) ?? 'ok'
  document.getElementById('temp').innerHTML = temp ?? '未采集';
}
如上面的示例,就会正确的显示了。

文章评论