简述null undefined NaN的异同
1 JS类型类型
基础数据类型:
string,number,boolean,undefined,null
复杂数据类型
object
var a3 = "hello"; // string
var a2 = 10; // number
var a4 = true; // boolean
var a1; // undefined
var a7 = null; // object (注意:null是特殊的,它是object)
var a5 = new Object(); // 0bject
var a6 = NaN; // number
var a8 = undefined; // undefined
结论:未定义的值和定义未赋值的数据类型是undefined,null是一种特殊的object,NaN是一种特殊的number
2 null 和 undefined 异同
2.1 undefined 数据类型
对象属性不存在 或者 声明了变量但从未赋值,返回是 undefined 类型
undefined属性用来存放JS的undefined值
2.2 null数据类型
null 表示的是 无值 或者 无对象,即该变量没有保存有效的数字、字符串、boolean、数组或对象
以通过给一个变量赋null值来清空数据的内容
ull的typeof返回是object
2.3 异同
null是关键字;undefined是Global对象的一个属性
null是对象(空对象, 没有任何属性和方法);undefined是undefined类型的值
console.log(typeof null); // 返回: object
console.log(typeof undefined); // 返回: undefined
在对象模型中,所有的对象都是Object或其子类的实例,但是null对象除外
// instanceof 判断是否是对象
console.log(null instanceof Object); // 返回: false
null “等值” undefined,但是不 “全等值=” undefined
console.log(null == undefined); //返回: true
console.log(null === undefined); // 返回: false
运算时,null和undefined都可以被类型转换为false,但是不等值于false
console.log(!null, !undefined); // true,true
console.log(null == false); // false
console.log(undefined == false); // false
3 比较运算
var a1; // a1的值为undefined
var a2 = null;
var a3 = NaN;
console.log(a1 == a2); // true
console.log(a1 == a3); // false
console.log(a1 != a3); // true
console.log(a2 == a3); // false
console.log(a3 == a3); // false
结论:undefined与null是相等;NaN与任何值都不相等,与自己也不相等