这篇文章给大家介绍JavaScript中null和undefined的区别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
网上有很多关于null和undefined区别的论述,看似讲了很多知识,但又好像没什么用,无法指导实际开发。结论大多是null和undefined基本一样,只有细微差别,是历史设计错误的产物,甚至应该把其中一个从语言中去掉。
实际上,这两个值还是有很大的区别的,并且这两个值还有存在的意义。
undefined
undefined代表未定义,也就是不存在的意思。也可以换个角度,就是应该有值,但是还没赋值,连null值都没有赋予。
var foo;console.log(foo); // undefinedfoo = null;console.log(foo); // nullconsole.log(bar); // Uncaught ReferenceError: bar is not defined
null
null则代表有值,是存在的,但是为空值。空值不是不存在,而是有一个叫做空值的值。在语言层面,null是object,是一种特殊的空对象。如果把一个变量赋予null,则该变量原先指向的对象可以被GC回收,释放内存空间。当然也可以认为null是null类型,这不影响实际的意义。
console.log(typeof(null)); // objectconsole.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的区别是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。