【发布时间】:2020-01-05 06:07:28
【问题描述】:
考虑下面的代码。
console.log("All" && 1); // 1
console.log("All" || 1); // "All"
如您所见,第一个表达式 "All" && 1 的计算结果为 1。这肯定不是布尔值(不是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 返回一个非布尔值?
【问题讨论】:
标签: javascript c logical-or logical-and