0
点赞
收藏
分享

微信扫一扫

js中null与undefined的区别

Hyggelook 2022-01-08 阅读 69

JS中 null 与 undefined 的区别

简单通俗点讲:
null 表示一个值被定义了,定义为“空值”,声明了,但我设定他的值就是空值,是可以作为一个值来进行赋值的;undefined 表示根本不存在值的定义,也就是变量声明了,但不能用他来进行赋值。

一)两者十分相似

用一个代码就能说明

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

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

undefined == null
// true

在 if 语句中,undefined 和 null 都能被转换成 false ,用相等运算符甚至直接报告两者相等。

二)为什么 JS 的开发者要设置这两个值

因此,Brendan Eich又设计了一个undefined

三)具体区别

null 能被作为一个值进行赋值,但undefined不可以

回到文章最先的那段话:

null 表示一个值被定义了,定义为“空值”,声明了,但我设定他的就是空值,是可以作为一个值来进行赋值的;

undefined 表示根本不存在定义,也就是变量被声明了,但是没有赋值,不能用他来进行赋值

所以设置一个值为 null 是合理的,如

objA.valueA = null;

但设置一个值为 undefined 是不合理的,如

objA.valueA = undefined; 
// 应该直接使用 delete objA.valueA; 
// 任何一个存在引用的变量值为undefined都是一件错误的事情。

这样判断一个值是否存在,就可以用

objA.valueA === undefined 
// 不应使用 null 因为 undefined == null,而 null 表示该值定义为空值

四)用法

目前,null和undefined基本是同义的,只有一些细微的差别。

null表示"没有对象",即该处不应该有值。典型用法是:

Object.getPrototypeOf(Object.prototype)
// null

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

参考文章:undefined与null的区别

举报

相关推荐

0 条评论