JavaScript逻辑运算符内部

JavaScript逻辑运算符内部,javascript,boolean,logical-operators,Javascript,Boolean,Logical Operators,在阅读JavaScript文档时,我遇到了一个让我困惑的问题: “逻辑运算符通常与布尔(逻辑)运算符一起使用值;如果是,则返回布尔值。但是,&&和| |运算符实际上返回指定操作数之一的值,因此如果这些运算符与非布尔值一起使用,则可能返回非布尔值。下表介绍了逻辑运算符 && Operator: expr1 && expr2 (逻辑AND)如果可以转换为false,则返回expr1;否则返回expr2。因此,当与布尔值一起使用时,&&如果两个操作数都为true,则返

在阅读JavaScript文档时,我遇到了一个让我困惑的问题:

“逻辑运算符通常与布尔(逻辑)运算符一起使用值;如果是,则返回布尔值。但是,&&和| |运算符实际上返回指定操作数之一的值,因此如果这些运算符与非布尔值一起使用,则可能返回非布尔值。下表介绍了逻辑运算符

&& Operator: expr1 && expr2
(逻辑AND)如果可以转换为false,则返回expr1;否则返回expr2。因此,当与布尔值一起使用时,&&如果两个操作数都为true,则返回true;否则返回false

|| Operator: expr1 || expr2
(逻辑OR)如果可以转换为true,则返回expr1;否则返回expr2。因此,当与布尔值一起使用时,如果任一操作数为true,则返回true;如果两者都为false,则返回false。”

假设你有:

var a3 = false && true; 
因此,考虑到“and”运算符的规则,变量a3应该包含值true,因为“false”不能转换为false

单词“可以转换为false”的选择源于JavaScript具有truty和false值

所有值都可以转换为真实值或假值

false
为false,因此不会进行类型转换,但其他值会转换为false,例如:

undefined, null, NaN, 0, ""
因此and语句将返回
false
而不是
true
,因为
false
已经是
false
,不需要进行转换。

单词“可以转换为false”的选择源于JavaScript具有truty和false值

所有值都可以转换为真实值或假值

false
为false,因此不会进行类型转换,但其他值会转换为false,例如:

undefined, null, NaN, 0, ""

因此and语句将返回
false
而不是
true
,因为
false
已经是
false
,不需要转换。

false可以简单地转换为false,因为它已经是false。为什么
false
不能转换为
false
false
false
。True也可以转换为false。因此,任何东西都可以转换为false?True不能转换为false。false可以简单地转换为false,因为它已经是false了。为什么
false
不能转换为
false
false
false
。True也可以转换为false。所以任何东西都可以转换成假的?真的不能转换成假的。我认为你是对的。这种混乱是由于文档中的词语选择不当造成的。更好的方法是,“如果它是一个假值,则返回expr1;否则,返回expr2”,并结合行“可以转换为假的表达式示例是那些计算为null、0、空字符串(“”)或未定义的表达式”。@robertrocha如何将表达式转换为布尔值。重要的是要区分表达式的值转换为布尔值只是为了比较,返回的值是表达式的实际值(例如,
null
转换为
false
进行比较,但返回值
null
),我想你是对的。这种混乱是由于文档中的词语选择不当造成的。更好的方法是,“如果它是一个假值,则返回expr1;否则,返回expr2”,并结合行“可以转换为假的表达式示例是那些计算为null、0、空字符串(“”)或未定义的表达式”。@robertrocha如何将表达式转换为布尔值。重要的是要区分表达式的值仅为了比较而转换为布尔值,返回值是表达式的实际值(例如,
null
转换为
false
进行比较,但返回值
null
)。