日期:2014-05-16  浏览次数:20320 次

javascript中对null, undefined的误解

在找一些javascript资料的时候,翻看了一些博文, 其中一篇关于对null和undefined的分析的博文 http://blog.csdn.net/leadzen/article/details/3899392, 里面一些总结, 评论让我思考不少, 个人认为是一篇理解偏差非常大的文章, 但是访问量, 回复基本上都是叫好的. 甚至让我有些怀疑自己(自以为我的javascript知识是远远远远不够好的). 停下来想想, 在国内的各个论坛找一些技术文章看的时候, 好像对于90%以上的人对javascript的理解, 有严重的偏差(在找一些资料的时候,都不太敢看国内论坛里的一些文章). 也写一点东西, 希望能让自己的思路清晰一些, 也能帮到一些人.


先对javascript本身这个名词加一些说明, 参见 http://www.w3school.com.cn/js/pro_js_history.asp (w3school.com.cn的内容基本可信, 基本就是国外w3school的翻译, 里面的内容基本算是比较权威). 本文后面所有用的ECMAScript代表平时所说的javascript.


还是针对之前提到的博文,作一些说明(博文建议直接找开链接查看,由于格式、篇幅原因,不贴出来)

1. 对于null和undefined,ECMAScript规范中定义了6中数据类型, Null, Undefined, Boolean, Number, String和Object. null和undefined分别是类型Null和Undefined的唯一的值<参见 ecmascript language specification第4章,第8章>. 而对于null和undefined的比较, 语言规范本身就说明: 在比较 x == y 时, 如果 x 为 null 并且 y 为 undefined  或             者 x 为undefined 并且 y 为 null时, 返回true. 而 !== 符号是跟 === (strict equality) 相对的, 而 undefined === null 是返回false的<具体比较规则参见ecmascript language specification第11.9章>.

所以对于二者的比较结果, 就没有意外了.


    2.关于运算符typeof对null和undefined的运算

对值为Undefined类型执行typeof运算返回"undefined", 对Null类型执行typeof运算,返回"object". 其它类型执行typeof运算返回值见下表

Table 20 — typeof Operator Results
友情链接: 爱易网 云虚拟主机技术 云服务器技术 程序设计技术 开发网站 APP开发教程
Copyright © 2013-2024 爱易网页 当前在线:924人  网站在14时38分5秒内访问总人数:198608人 当前 30.73%  粤ICP备18100884号-2
Type of val Result
Undefined "undefined"
Null "object"
Boolean "boolean"