【问题标题】:How is undefined converted into binary in javascript?javascript中未定义如何转换为二进制?
【发布时间】:2021-10-28 08:51:21
【问题描述】:

undefined 如何在 JavaScript 中以二进制形式处理? 当我做(undefined).toString(2)时它会抛出错误。

但是当我这样做时

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

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

【问题讨论】:

    标签: javascript binary undefined bitwise-operators


    【解决方案1】:

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

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

    还有ToNumericdoes ToNumber

    Argument Type   Result
    Undefined       Return NaN.
    

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

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

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

    (undefined).toString(2) 不起作用,因为访问表达式的属性(如toString)仅在表达式是对象或可以包装在对象中的原语时才有效。 undefined 和 null 不是对象,也不能合二为一,因此尝试访问它们的任何属性都会抛出异常。

    【讨论】:

      猜你喜欢
      • 2011-09-04
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 1970-01-01
      • 2022-08-13
      • 2014-02-16
      • 2011-02-17
      相关资源
      最近更新 更多