javascript - javascript中未定义如何转换为二进制?
问题描述
undefined
javascript中的二进制如何处理?当我这样做时它会引发错误(undefined).toString(2)
。
但是当我这样做时
undefined & 0 //returns 0
undefined & 1 //returns 0
undefined | 0 //returns 0
undefined | 1 //returns 1
有人可能会猜测undefined
可能会转换为 0 。或者还有其他事情发生吗?
解决方案
有点儿。当使用按位运算符(以及仅在数学方面有意义的其他运算符 - 例如-
and*
等**
)时,两个表达式都首先转换为数字。
4. Let lnum be ? ToNumeric(lval).
5. Let rnum be ? ToNumeric(rval).
Argument Type Result
Undefined Return NaN.
- 如果 number 为 NaN、+0、-0、+∞ 或 -∞,则返回 +0。
因此,它们被有效地转换为 NaN 以准备数学运算,然后将 NaN 转换为 0 以进行二进制运算。
(undefined).toString(2)
不起作用,因为访问表达式的属性(如toString
)仅在表达式是对象或可以包装在对象中的原语时才有效。undefined 和 null 不是对象,也不能转换为一个对象,因此尝试访问它们的任何属性都会抛出异常。
推荐阅读
- mysql - mysqli_real_connect(): MySQL 服务器已经离开
- json - 将带有嵌套消息的 protobuf 绑定到 Golang 结构
- javascript - 我可以在其他文件而不是 index.js 中编写 firebase 实时数据库触发器吗?
- javascript - 从 Google 自动完成设置邮政编码/ZIP
- javascript - 我在运行以下代码时遇到问题,我想打印 msg
- javascript - 检查最后一个字符是否为点 (.)
- webrtc - 如何在 WEBrtc 频道上发送图像?
- c++ - ‘AES_ctr128_encrypt’ was not declared in this scope
- php - 使用 PHP 检查所有复选框
- python - 来自胶囊网络代码的分类模块