千里ち*_*ちゃん 4 javascript c++ types programming-languages type-conversion
我正在阅读我的书"优雅的JavaScript",null == true评价为假.使用口译员,我已经证实了这一点TRUE.但是,在本章的后面 - 实际上,在同一页面上 - ,它表示当作为if,while或for语句的条件给出null时,它将被转换为布尔值并返回false.
任何有更深入洞察力的人都可以告诉我为什么会这样吗?我知道在哪里可以找到浏览器源代码,但我不知道如何定位导致这种特殊和不正常行为的编程.因为我对C++知之甚少,所以我也很欣赏任何有关如此独立查找信息的提示.
谢谢.
做出一个重要的区别是这Type的null是Null.
(忽略typeof它返回"object"了null,因为糟糕的设计和向后兼容性)
11.9.3抽象等式比较算法#Ⓣ比较x == y,其中x和y是值,产生真或假.这样的比较如下进行:
[...剥离]
- 返回false.
说,与比较null和Boolean应该返回false,因为Type中Null和Boolean是不一样的,并没有在11.9.3其他步骤也适用这样的默认操作return false发生
唯一的情况下Type的x和y是不同的,要么x或y是null但==操作仍然返回true是
如果x为null且y未定义,则返回true.
如果x未定义且y为null,则返回true.
这意味着undefined == null回报true
特别说明:
有一个ES6:和谐提案要修复typeof null
| 归档时间: |
|
| 查看次数: |
2881 次 |
| 最近记录: |