Chrome Javascript正确评估布尔表达式吗?

时间:2016-09-30 14:41:12

标签: javascript google-chrome firefox boolean evaluation

这是一种分配默认值的流行模式:

var aBool = '' || false;
var aString = false || '';

上面会给aBool布尔值false,而aString是空字符串的值,至少在Chrome和FF的控制台中。这与:

相反
  

如果可以转换为true,则返回expr1;否则,返回   表达式2。因此,当与布尔值一起使用时,||如果有,则返回true   操作数可以转换为true;如果两者都可以转换为false,   返回false。   来源:mozilla

这实际上很方便,但它是否正确?

1 个答案:

答案 0 :(得分:0)

在同一个网页上,它说:

  

可转换为false的表达式示例如下:

     
      
  • 空;
  •   
  • 为NaN;
  •   
  • 0;
  •   
  • 空字符串(“”);
  •   
  • 未定义。
  •   

在第一个示例中,您有一个空字符串,因此在转换为布尔值时会转换为false。由于expr1无法转换为true,因此表达式返回expr2,即false

在第二个示例中,expr1false,因此返回expr2,即''。转换为Boolean仅用于确定应返回哪个表达式,它不会返回转换后的值。