对非数字的按位运算
Bitwise operations on non numbers
不知何故,JavaScript 可以理解按位运算NaN ^ 1
、Infinity ^ 1
甚至'a' ^ 1
(都计算为 1
)。
管理非数字的按位运算符的规则是什么?为什么上面所有的例子都计算1
?
根据 ES5 规范,在执行按位运算时,所有操作数都转换为 ToInt32
(首先调用 ToNumber
。如果值为 NaN
或 Infinity
,则转换为 0
)。
因此:NaN ^ 1
=> 0 XOR 1
=> 1
ECMA-262 在 11.10 中定义了二进制按位运算符的参数使用 ToInt32 进行转换。9.5解释了ToInt32在前两点中说:
- 让 number 是在输入参数上调用 ToNumber 的结果。
- 如果数字为 NaN、+0、-0、+Inf 或 -Inf,则返回 +0。
相关文章:
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 测试索引值是否等于某个数字的倍数
- 将数字转换为一定数量的硬币
- 键入最后一位数字后自动提交
- 如何在javascript中迭代数字列表
- Javascript逻辑运算符和字符串/数字
- 如何在javascript中获得与特定数字相等的随机数
- 为什么只有一个数字项的数组可以用一些算术运算
- 对非数字的按位运算
- 我如何在Javascript中对大于2^32的数字进行逐位运算
- 只对数字的小数部分进行除法运算
- 有可能对大于2^53的数字正确地进行数学运算吗
- 确定较大的数字并进行除法运算
- 在JavaScript中对两个数字进行加法和减法运算(没有日志)
- 使用数学运算符循环对字符串数组(里面有数字)执行数学运算
- 数字运算
- 如何将数量类型更改为数字类型以在javascript中执行算术运算
- Euler#2 Fibonacci Javascript函数在对数字进行运算后只会返回零
- 打字.如何避免foreach循环中的此错误:;算术运算的左侧必须是类型'任意''数字'或者
- 试图对一个数字的每个数字进行平方运算,但我的算法不起作用