怎么样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
在每个操作符上,它有
- If number is NaN, +0𝔽, -0𝔽, +∞𝔽, or -∞𝔽, return +0𝔽.
所以它们被有效地转换为 NaN 为数学运算做准备,然后 NaN 被转换为 0 以进行二元运算。
(undefined).toString(2)
不起作用,因为访问表达式的属性(如 toString
)仅在表达式是对象或可以包装在对象中的基元时才有效。 undefined 和 null 不是对象,也不能转换为一个,所以试图访问它们的任何属性都会抛出。
关于javascript - javascript 中 undefined 是如何转换成二进制的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68969936/