让前端飞

javascript之null和undefined的区别

2018-11-23  本文已影响2人  子龙0322

null 和 undefined 作为 JS 的两种基本类型,都表示「空」的状态,既然目的一致,那么为什么需要两个?


null vs undefined

下面,我试着总结下两者的区别。

任何一门计算机语言,都要有表示变量状态为「空」的数据类型,比如说 java 的 null,python 的 None,而它们都只有这一种表示「空」的数据类型。
而 JS 却有两种...这若与直接其他语言进行数据交互时,就有可能出现问题:

var friend={
    name: null,
    age: undefined,
    hobby: [null, 'reading', undefined]
};

JSON.stringify(friend);  // {"name":null,"hobby":[null,"reading",null]}

从上可看出,在 JS 对象转 JSON 时, JSON.stringify() "聪明地"将两种为转为了一种,以便语言间的数据交互。

其两者的区别大致还有:
  1. undefined 通常为未赋值而产生的数据类型,其特性有:
var a; // undefined
var o = {};
o.a; // undefined
function f() {}
f(); // undefined
Number(undefined); // NaN
undefined + 1 // NaN
  1. null 为变量特意赋值的数据类型,其用法通常和对象有关(甚至于 typeof null; -> "object" ... 说好的基本数据类型呢? 😂):
Number(null); // 0
null + 1 // 1



以上,便是我知道的 null 与 undefined 的区别。
欢迎交流,补充~

上一篇 下一篇

猜你喜欢

热点阅读