javascript - javascript 中 undefined 是如何转换成二进制的?

标签 javascript binary undefined bitwise-operators

怎么样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 在每个操作符上,它有
  1. 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/

相关文章:

python - 在列表中查找-1s、1s 和 0s 的多数票 - python

java - 类型 ******** 的方法 ***** 未定义

javascript - 在javascript中为 undefined variable 设置默认值

javascript - 如何在AngularJS中应用特殊字符的搜索过滤器

c - PulseAudio:录制声音但播放烦人的声音

c++ - 需要帮助理解 vector 如何以二进制表示 [C++]

c++ - 比较奇怪的行为

javascript - 我可以通过单击该 html 文件中的按钮来录制我的屏幕/网页吗?

javascript - Vue 中的 Immer 数据未更新

javascript - 对象的事件委托(delegate);如何监听事件?