是Chrome Javascript评估布尔表达式正确

Is Chrome Javascript evaluating boolean expressions correctly?

本文关键字:布尔表达式 评估 Chrome Javascript      更新时间:2023-09-26

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

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

以上将给aBool boolean的false的值,和aString的空字符串的值,至少在Chrome的和FF的控制台。这与:

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

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

在同一个网页上,它说:

可以转换为false的表达式的例子有:

    零;
  • 南;
  • 0;
  • 空字符串(");
  • 定义。

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

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