如果想为一个变量赋默认值,通常的做法是使用逻辑或运算符 || :
然而,由于 ||
是一个布尔逻辑运算符,左侧的操作数会被强制转换成布尔值用于求值。任何假值(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 ?? '未采集'; }
如上面的示例,就会正确的显示了。
文章评论