对非数字的按位运算

Ran*_*lue 14 javascript bit-manipulation operators

不知何故,JavaScript理解了按位运算 NaN ^ 1,Infinity ^ 1甚至'a' ^ 1(都评估为1).

在非数字上管理按位运算符的规则是什么?为什么上面的所有例子都要评估1

Roc*_*mat 11

根据ES5规范,在进行按位运算时,所有操作数都将转换为ToInt32(首先调用ToNumber.如果值为NaNInfinity,则转换为0).

因此:NaN ^ 1=> 0 XOR 1=>1