null和undefined的区别(全网最全)

前言:
这道面试题也是比较的经典,如果需要我来打星的话,可以给个五颗星,相当于就是可以不问,问就是需要你好好回答的。

一、从定义上来讲

undefined:未定义。表示 此处应该有一个值,但是还没有定义。

null:空的。表示 没有对象,即此处不应该有值。

二、从数据类型上来看

首先undefined和null都是基本数据类型

typeof(undefined)   //  'undefined'
typeof(null)  //  'object'

从typeof的结果来看,undefined和null的结果是不一致的。

加分回答:为什么null的数据类型是object,因为null值表示一个空对象指针。

三、从 == 和 === 来看

undefined == null   // true
undefined === null  // false

加分回答
1、在"=="的时候不能说undefined和null隐式转换,因为undefined和null是不能转为其他类型的值再进行比较的。并且规定了undefined == null。所以说只要记住就行了,因为它们都代表着无效的值
2、在"==="的时候因为null和undefined它们不属于同一数据类型所以不全等。

四、undefined 从用法上

1、已经声明,未赋值
let a
console.log(a)

ps:但是你不能未声明变量,直接console.log(变量名),那样是会报错的

2、对象某个属性不存在
let obj= {}
console.log(obj.a)
3、函数里面少了参数
function fn (a,b){
     console.log(a,b)
}
fn(4)
4、函数默认返回值(构造函数除外)
function fn(){
}
console.log(fn())

五、null 从用法上

1、手动释放内存
let obj = {}
obj = null
2、作为函数的参数(此参数不是对象)

调用函数时传入 null 作为参数,表示本次函数调用的参数没有值(没有内容)

3、原型链的顶端

加分项:
原型链的终点是 Object.prototype.__proto__
Object.prototype.__proto__=== null结果是true

结尾:你们的点赞是对我最大的支持,阅读量超过50,更新下一题.

你可能感兴趣的:(null和undefined的区别(全网最全))