为什么JS中的true * true === 1?

时间:2015-08-26 00:05:03

标签: javascript comparison boolean-logic

通过Good Parts并在节点中搞乱,我想知道为什么会出现这种情况。我知道 !指的是“逻辑非”运算符,那!!基本上booleanates(ifies?)!x的返回值,但是为什么呢?

var x = 3, y = 4;

x != y;     // true
x = !y      // false ----> But really, its setting x to "not y", a truthy value, correct
x = !!x*x   // 1 --- wut?

所以,在玩了一下之后,我明白所声明的是,“x等于不是x(”真“,因为!x === false)乘以x(真)”

所以我想问题是,为什么这是真的* = 1在JS中?

2 个答案:

答案 0 :(得分:4)

*运算符会将true强制转换为1以评估乘法,并1 * 1 === 1

答案 1 :(得分:1)

虽然false是0的位值,但True是1的位值。所以我相信你问的是为什么1 * 1 = 1?我希望能够很好地解释它。