null和undefined的异同

1、简单介绍

null 和undefined都是JavaScript里的简单数据类型,平时很容易弄混他俩的用法与区别。通常静态类型语言里都只有一个来表示“空”的类型,好比java里的null,那为何JavaScript里有两个呢?javascript

在设计JavaScript之初,就只有null来表明空,null能够经过Number()转换成0。可是设计者以为一个不够。缘由以下:java

1. null被当成一个对象,在JavaScript中,有原始类型和合成类型两大类,设计者以为用对象来表示空很差。bash

2. JavaScript设计之初没有错误处理机制,若是数据类型不匹配,要么自动转换类型,要么就默默失败,null会自动转换成0,这样很不容易发现错误。函数

因此,undefined诞生了。ui

2、null和undefined的相同

1. 在if语句中 两者都会被自动转成false。

if (!undefined) 
    console.log('undefined is false');
// undefined is false

if (!null) 
    console.log('null is false');
// null is false

undefined == null
// true复制代码

2.  两者经过parseInt转换都是NaN

parseInt(null)
NaN
parseInt(undefined)
NaN复制代码

3、两者的不一样

最初的时候区分是这样的: null表示一个无的对象,转换为数值时是0, undefined表示无的原始值,转成数值是NaN.spa

可是实际用的时候,发现不行啊 ,他俩太像了。prototype

null表示没有对象,此处不应有值。设计

常常用在: code

①表示函数的参数,表明此参数不是对象 对象

② 做为对象原始链的终点。

Object.getPrototypeOf(Object.prototype)
// null复制代码

undefined表示缺值,就是此处应该有值,可是没定义。

常常用在:

①变量声明了可是没定义值;

②调用函数的时候,该传的参数没传,此时参数就是undefined

③对象没有赋值的属性,该属性值为undefined;

④ 函数没返回值时默认返回undefined

var i;
i // undefined

function f(x){console.log(x)}
f() // undefined

var  o = new Object();
o.p // undefined

var x = f();
x // undefined
复制代码
相关文章
相关标签/搜索