如何在javascript中将undefined转换为二进制



如何在javascript的二进制文件中处理undefined?当我执行(undefined).toString(2)时,它会抛出错误。

但当我做时

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

人们可能猜测CCD_ 3可能被转换为0。或者还有其他事情发生吗?

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

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

ToNumeric做有的ToNumber

Argument Type   Result
Undefined       Return NaN.

然后二进制运算符在每个运算符上调用ToInt32,该运算符具有

  1. 如果数字是NaN、+0、-0、+∞或-∞,则返回+0

因此,它们被有效地转换为NaN,为数学运算做准备,然后NaN被转换为0,用于二进制运算。

(undefined).toString(2)不起作用,因为只有当表达式是对象或可以封装在对象中的基元时,访问表达式的属性(如toString)才起作用。Undefined和null不是对象,也不能将它们转换为一个对象,因此尝试访问它们的任何属性都会引发错误。

最新更新