考虑以下代码。
console.log("All" && 1); // 1
console.log("All" || 1); // "All"
如您所见,第一个表达式 ,"All" && 1
的计算结果为1
。这肯定不是布尔值(不是 a true
)。我希望这里更准确。因为我没有将结果强制为String
.
第二个表达式 ,"All" || 1
计算为All
。这也不是布尔值。
在 C 语言中,两个表达式的计算结果为1
. 当我强制结果转换为字符串时。
#include <stdio.h>
int main() {
printf("%d\n", "All" && 1); // 1
printf("%d\n", "All" || 1); // 1
return 0;
}
为什么 JavaScript 的行为不同?更具体地说,为什么 JS 返回一个非布尔值?