Javascript 1&&2&&3返回3。有人能解释为什么吗
我最近在一次采访中被问到这个问题。 我知道JavaScript中的求值是从左向右的。 1和2应该为false,对吗?Javascript 1&&2&&3返回3。有人能解释为什么吗,javascript,Javascript,我最近在一次采访中被问到这个问题。 我知道JavaScript中的求值是从左向右的。 1和2应该为false,对吗? 我在这里读到另一个问题,1&&2返回2。然后返回第一个falsy值。但感觉很模糊。有人能详细说明一下吗?如果&&的左侧计算为假值,则整个表达式的计算结果为左侧 否则,它将计算为右侧 这就是为什么1&&2&&3会给出3。如果&&3的左侧值为假值,则整个表达式的计算结果为左侧值 1 && 2 && 3 否则,它将计算为右侧 这就是为什么1&&2&&
我在这里读到另一个问题,1&&2返回2。然后返回第一个falsy值。但感觉很模糊。有人能详细说明一下吗?如果&&的左侧计算为假值,则整个表达式的计算结果为左侧 否则,它将计算为右侧
这就是为什么1&&2&&3会给出3。如果&&3的左侧值为假值,则整个表达式的计算结果为左侧值
1 && 2 && 3
否则,它将计算为右侧
这就是为什么1&&2&&3会给你3
1 && 2 && 3
相同的
if (1) {
if (2) {
if (3) {
return 3
} else {
return 3
}
} else {
return 2
}
} else {
return 1
}
1 && 2 && 3 //3
1 && 0 && 3 //0
1 && false && 3 //false
false && 0 && 3 //false
1 && 0 && false //0
相同的
if (1) {
if (2) {
if (3) {
return 3
} else {
return 3
}
} else {
return 2
}
} else {
return 1
}
1 && 2 && 3 //3
1 && 0 && 3 //0
1 && false && 3 //false
false && 0 && 3 //false
1 && 0 && false //0
AND&&运算符执行以下操作:
从左到右计算操作数
对于每个操作数,将其转换为布尔值。如果结果为false,则停止并返回该操作数的原始值
如果已计算所有操作数,即所有操作数均为真值,则返回最后一个操作数
换言之,并返回第一个falsy值,如果未找到,则返回最后一个值。当所有值都为truthy时,将返回最后一个值
参考:
1和2应该为false,对吗
不,在布尔上下文中的Javascript中,这些值被转换为。转换为的值只有六个,它们是:false、0、空字符串,例如null、undefined和NaN。and&&运算符执行以下操作:
从左到右计算操作数
对于每个操作数,将其转换为布尔值。如果结果为false,则停止并返回该操作数的原始值
如果已计算所有操作数,即所有操作数均为真值,则返回最后一个操作数
换言之,并返回第一个falsy值,如果未找到,则返回最后一个值。当所有值都为truthy时,将返回最后一个值
参考:
1和2应该为false,对吗
不,在布尔上下文中的Javascript中,这些值被转换为。转换为的值只有六个,它们是:false、0、空字符串,例如null、undefined和NaN。如果所有值都是truthy或第一个找到的值,则返回最后一个值
console.log1&&2&&3;//3.
console.log1&&0&&null;//如果所有值都是真值或第一个找到的值,则0返回最后一个值
console.log1&&2&&3;//3.
console.log1&&0&&null;//0&&是表达式上的布尔AND运算符。分部表达式的求值按常规进行,即结果不是“真”布尔值,但被解释为“真”或“假”。
因此,JS引擎必须对所有表达式求值,直到找到第一个falsy值为止。总体结果就是第一个falsy值,解释为false,或者直到没有其他表达式。
该标准要求从左到右进行评估
准确的Falsy/Truthy定义如下:
法尔西:
false、0、null、未定义、NaN中的一个
真的:
除非是虚伪的。
这在中的ToBoolean函数的定义中指定。另请参阅MDN上的词汇表,以获得清晰的摘要,&&是表达式上的布尔AND运算符。分部表达式的求值按常规进行,即结果不是“真”布尔值,但被解释为“真”或“假”。
因此,JS引擎必须对所有表达式求值,直到找到第一个falsy值为止。总体结果就是第一个falsy值,解释为false,或者直到没有其他表达式。
该标准要求从左到右进行评估
准确的Falsy/Truthy定义如下:
法尔西:
false、0、null、未定义、NaN中的一个
真的:
除非是虚伪的。
这在中的ToBoolean函数的定义中指定。另请参见MDN上的词汇表,以获得清晰的摘要,除0之外的所有数字在执行时返回true&执行时返回true&当所有操作数都为true&返回正数值时,1&&2返回2,2&&3将返回3除0之外的所有数字在执行时返回true&执行时返回正数值时,1&&2返回2,2&&3将返回3为什么1&&2为假…?我认为您将1==2与1&&2混淆了注意&&不是二进制运算符;那将是&单的&。为什么1&&2会是假的…?我想你把1==2和1&&2混淆了。注意&&不是一个二进制运算符;那将是&single&。这并不重要,因为它们是不可访问的,但是返回2和返回1从何而来?你的意思是返回false,在这种情况下应该还有一个?最后一个例子返回0,不是false,很抱歉让人讨厌;非常感谢。这是有道理的。这并不重要,因为它们是不可访问的,但返回2和返回1从何而来?你的意思是返回false,在这种情况下,应该还有一个
其中?最后一个例子返回0,不是假的,很抱歉让人讨厌;非常感谢。这是有道理的。