首页 > 编程笔记

JS undefined和null的区别

在 JavaScript 中,数据类型可以分为基本数据类型和引用数据类型,其中基本数据类型包括 Undefined、Null、Boolean、Number、String 5 种,在 ES6 中新增了一种新的基本数据类型 Symbol。

Undefined 类型

Undefined 类型只有一个唯一的字面值 undefined,表示的是一个变量不存在。

下面是 4 种常见的出现 undefined 的场景:
var a;
console.log(a);  // undefined
var obj = {
    name: 'kingx'
};
console.log(obj.address);  // undefined
function foo() {}
console.log(foo()); // undefined
function foo(param1, param2, param3) {
    console.log(param3);
}
foo(1, 2);  // undefined

Null 类型

Null 类型只有一个唯一的字面值 null,表示一个空指针对象,这也是在使用 typeof 运算符检测 null 值时会返回“object”的原因。

下面是 3 种常见的出现 null 的场景:
var returnObj = null;

function foo() {
   return {
      name: 'kingx'
   };
}

returnObj = foo();
document.querySelector('#id');  // null
'test'.match(/a/);  // null

 Undefined 和 Null 两种类型的异同

Undefined 和 Null 虽然是两种不同的基本数据类型,存在一些不同的特性,但是在某些表现上存在着相同之处,这里就总结了 Undefined 和 Null 的相同点和不同点。

相同点:

var a;
var b = null;

console.log(a.name);  // Cannot read property 'name' of undefined
console.log(b.name);  // Cannot read property 'name' of null
上面代码表示在通过某个变量引用 name 属性时,若该变量值实际为 undefined 或者 null,就会抛出异常。
null == undefined;  // true

不同点:

typeof undefined; // undefined
typeof null;     // object
Object.prototype.toString.call(undefined);  // [object Undefined]
Object.prototype.toString.call(null);      // [object Null]
undefined + ' string';  // undefined string
null + ' string';      // null string
undefined + 0; // NaN
null + 0;     // 0

关注公众号「站长严长生」,在手机上阅读所有教程,随时随地都能学习。本公众号由站长亲自运营,长期更新,坚持原创,持续分享创业故事+学习历程+工作记录+生活日常+编程资料。

公众号二维码
微信扫码关注公众号

优秀文章