简述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是一种特殊的objectNaN是一种特殊的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与任何值都不相等,与自己也不相等

posted @ 2019-01-14 16:45  songxia777  阅读(218)  评论(0编辑  收藏  举报