javascript中undefined如何转化为二进制?

How is undefined converted into binary in javascript?

undefined 如何在 javascript 中处理二进制? 当我做 (undefined).toString(2).

时它会抛出错误

但是当我这样做的时候

undefined & 0 //returns 0 
undefined & 1 //returns 0 
undefined | 0 //returns 0 
undefined | 1 //returns 1

有人可能会猜测 undefined 可能会转换为 0 。或者还有其他事情吗?

有点。当使用按位运算符(以及其他仅在数学方面有意义的运算符 - 例如 -*** 等)时,两个表达式都会转换为 into numbers first

4. Let lnum be ? ToNumeric(lval).
5. Let rnum be ? ToNumeric(rval).

ToNumeric does ToNumber其中有

Argument Type   Result
Undefined       Return NaN.

然后是每个运算符上的 binary operators call ToInt32,其中有

  1. If number is NaN, +0, -0, +∞, or -∞, return +0.

所以它们被有效地转换为 NaN 为数学运算做准备,然后 NaN 被转换为 0 进行二元运算。

(undefined).toString(2) 不起作用,因为访问表达式的 属性(如 toString)仅当表达式是对象或可以包含在中的基元时才有效一个东西。 undefined 和 null 不是对象,也不能将它们转换为一个对象,因此尝试访问它们中的任何 属性 都会抛出。