温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

JavaScript中null和undefined的区别是什么

发布时间:2022-01-19 15:51:53 来源:亿速云 阅读:120 作者:kk 栏目:开发技术

这篇文章给大家介绍JavaScript中null和undefined的区别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

网上有很多关于null和undefined区别的论述,看似讲了很多知识,但又好像没什么用,无法指导实际开发。结论大多是null和undefined基本一样,只有细微差别,是历史设计错误的产物,甚至应该把其中一个从语言中去掉。

实际上,这两个值还是有很大的区别的,并且这两个值还有存在的意义。

undefined

undefined代表未定义,也就是不存在的意思。也可以换个角度,就是应该有值,但是还没赋值,连null值都没有赋予。

var foo;
console.log(foo); // undefined
foo = null;
console.log(foo); // null
console.log(bar); // Uncaught ReferenceError: bar is not defined

null

null则代表有值,是存在的,但是为空值。空值不是不存在,而是有一个叫做空值的值。在语言层面,null是object,是一种特殊的空对象。如果把一个变量赋予null,则该变量原先指向的对象可以被GC回收,释放内存空间。当然也可以认为null是null类型,这不影响实际的意义。

console.log(typeof(null)); // object
console.log(typeof(undefined)); // undefined

undefined和null类型

在 TypeScript 中,有undefined和null类型,这两种类型都只有唯一一个值,就是它们自己。并且是其它所有类型的子类型,可以赋值给任何类型。

let u: undefined = undefined;
let n: null = null;
let num: number = u;

实际应用

上面说了那么多,好像除了增加复杂性之外,并没有什么实际的用处。

下面用代码演示这两种类型的实际用法,可以体会不存在和空值具体有什么区别和用处:

var foo = {a:1, b:2};
console.log(JSON.stringify(foo)); // {"a":1,"b":2}
foo = {...foo, a:null};
console.log(JSON.stringify(foo)); // {"a":null,"b":2}
foo = {...foo, a:undefined};
console.log(JSON.stringify(foo)); // {"b":2}

从上面的代码可以看到,把一个对象的属性设置成undefined后,这个属性就消失了、不存在了。而设置成null,这个属性还是存在,只不过是null值。

如果你想让对象中某个属性消失,那么就把它设置成undefined吧。这也许是undefined和null同时存在的最大的意义。

JavaScript是什么

JavaScript是一种直译式的脚本语言,其解释器被称为JavaScript引擎,是浏览器的一部分,JavaScript是被广泛用于客户端的脚本语言,最早是在HTML网页上使用,用来给HTML网页增加动态功能。

关于JavaScript中null和undefined的区别是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI