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).
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 不是对象,也不能将它们转换为一个对象,因此尝试访问它们中的任何 属性 都会抛出。
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).
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 不是对象,也不能将它们转换为一个对象,因此尝试访问它们中的任何 属性 都会抛出。