当前位置: 首页 > Web前端 > JavaScript

JS中undefined和null的区别

时间:2023-03-27 15:28:18 JavaScript

JavaScript真的是一门特殊的语言,其他语言只有一个值表示“无”,比如Java语言使用null,C语言使用NULL,Python语言使用None,Ruby语言使用nil。JS中只有两种“空”,一种是undefined,一种是null。很多朋友刚开始学习的时候会有一个疑问,那就是undefined和null有什么区别?我什么时候应该使用哪个?接下来,我们好好聊聊吧!JS的基本数据类型在JS中,有几种基本数据类型ES5NumberValueStringStringBooleanBooleanUndefinedEmptyNullEmptyES6Symbel仅有的取值undefined和null其实是JS中的基本数据类型。从这个角度来看,它们是两者是一样的,都是空的意思,而且在比较数据类型的时候,在某些情况下也是一样的console.log(undefined==null)//true两者的区别是还是两者的区别意思,前面我们说过,所有的数据在计算机中都是以二进制的形式存储的,所以这两个数据也会以二进制的形式存储undefined因为是“没有”的意思,所以没有转换,而thereisnothingnull因为是“空”的意思,其实是有内容的,但是有一个空的内容,存储的是00000000...然后反馈给我们的代码,undefined表示没有值,或者unassignednull表示它有值,有空值,一般认为是空对象,也叫空指针。举个例子:我们拿数字来举例,就是说有一个具体的数字,100、200什么的,这个是0,用完了,没有这个是null,有一个空架子,还有没有别的。这是未定义的。连架子都没有。根据上面的例子undefined,你什么都不用做。只要不赋值,就是undefinednull。需要赋值,直接赋值是null,也就是需要装一个空架子。比较1.数据类型不同,但数值相同。两个数据分别属于Undefined类型和Null类型,但是代表的值都是空的。所以比较的时候要注意console.log(undefined==null)//true,不涉及数据类型比较console.log(undefined===null)//false,涉及数据类型比较2.当数据类型转换为数值类型,结果不同。null表示Empty,存储的时候也是很多0,所以转换成一个值就是0undefined表示没有,什么都没有。内容转换成值后就是NaNconsole.log(Number(null))//0console.log(Number(undefined))//NaN3。不同的场景使用null当我们需要一个空值或者空变量时,手动赋值时,原型链的结束位置,即Object.prototype.proto为nullundefined。当变量声明未赋值时,它是未定义的。当函数只有形参而没有实参时,这个形参的值也是未定义的。如果一个函数没有设置返回值,那么这个函数的返回值也是undefined。总之,记住一个原则。当你什么都没做时,它就是未定义的。只有当你想白干活的时候,那么你就可以手动写成null