如何在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
,该运算符具有
- 如果数字是NaN、+0、-0、+∞或-∞,则返回+0
因此,它们被有效地转换为NaN,为数学运算做准备,然后NaN被转换为0,用于二进制运算。
(undefined).toString(2)
不起作用,因为只有当表达式是对象或可以封装在对象中的基元时,访问表达式的属性(如toString
)才起作用。Undefined和null不是对象,也不能将它们转换为一个对象,因此尝试访问它们的任何属性都会引发错误。