Undefined 类型只有一个值, 即 undefined. 当声明的变量还未被初始化时, 变量的默认值为 undefined.
Null 类型也只有一个值, 即 null.null 用来表示尚未存在的对象, 常用来表示函数企图返回一个不存在的对象.
JS 代码
- let testTypeNum;
- alert(testTypeNum ==undefined); //output "true"
代码显示为 true, 代表 testTypeNum 的值即为 undefined, 因为没有初始化它.
JS 代码
alert(null == document.getElementById('noExistElement')); //True
页面上不存在 id 为 "notExistElement" 的 DOM 节点时, 该段代码显示为 "true", 因为在尝试获取一个不存在的对象.
JS 代码
- alert(typeof undefined); //output "undefined"
- alert(typeof null); //output "object"
第一行代码, undefined 的类型为 Undefined;
第二行代码, null 的类型是 Object?
这是 JavaScript 最初实现的一个错误, 后来被 ECMAScript 沿用下来. 我们可以解释为, null 即是一个不存在的对象的占位符, 在实际编码时还是要注意这一特性.
JS 代码
alert(null == undefined); //output "true"
ECMAScript 认为 undefined 是从 null 派生出来的, 所以把它们定义为相等的. 但是, 如果在一些情况下, 我们一定要区分这两个值, 那应该怎么办呢? 可以使用下面的两种方法.
JS 代码
- alert(null === undefined); //output "false"
- alert(typeof null == typeof undefined); //output "false"
null 与 undefined 的类型是不一样的, 所以输出 "false". 而 === 代表绝对等于, 在这里 null === undefined 输出 false.
总结: 未定义的值和定义未赋值的为 undefined,null 是一种特殊的 object,NaN 是一种特殊的 number.
1)undefined 与 null 是相等;(2)NaN 与任何值都不相等, 与自己也不相等.
3)undefined 属性用于存放 JavaScript 的 undefined 值
4) 无法使用 for/in 循环来枚举 undefined 属性, 也不能用 delete 运算符来删除它.
undefined 不是常量, 可以把它设置为其他值.
当尝试读取不存在的对象属性时也会返回 undefined.
5) 值等价于 undefined 运算符认为 运算来测试某个值是否是未定义的.(注: 不能通过与 undefined 做比较来测试一个变量是否存在, 即使可以检查它的类型是否为 "undefined")
对象属性不存在, 声明了变量但从未赋值都会返回 undefined.
6) 在 Jscript 中数据类型 null 只有一个值: null. 关键字 null 不能用作函数或变量的名称.
包含 null 的变量包含 "无值" 或 "无对象". 换句话说, 该变量没有保存有效的数, 字符串, boolean, 数组或对象. 可以通过给一个变量赋 null 值来清除变量的内容.
注意, 在 Jscript 中, null 与 0 不相等 (与在 C 和 C++ 中不同). 同时应该指出的是, Jscript 中 typeof 运算符将报告 null 值为 Object 类型, 而非类型 null
来源: http://www.bubuko.com/infodetail-2967992.html