null和undefined的区别有哪些?

相同点

1.null和undefined都是js的基本数据类型

2.undefined和null都是假值(falsy),都能作为条件进行判断,所以在绝大多数情况下两者在使用上没有区别

if(undefined){
  console.log('真的');
}else{
  console.log('假的');  //执行
}

if(null){
  console.log('真的');
}else{
  console.log('假的');  //执行
}

当我们对两者进行比较的时候

//松散比较(loose equality)
console.log(null == undefined); //true

//严格比较(strict equality)
console.log(null === undefined); //false

不同点

undefined

undefined代表的含义是未定义,一般声明了还没有定义的时候返回undefined, undefined 在 JavaScript中不是一个保留字,这意味着可以使用 undefined 来作为一个变量名,但是这样的做法是非常危险的,它会影响对 undefined值的判断。我们可以通过一些方法获得安全的 undefined 值,比如说 void 0。


什么情况会出现undefined

//a并未定义过
console.log(typeof a);  //"undefined"
//注意,这里只能使用typeof,直接使用a会造成报错
console.log(a);  //Uncaught ReferenceError: a is not defined
//定义但未赋值
let a;
console.log(a);  //undefined
let a=undefined;
console.log(a); //undefined
//1-参数
function blueFn(a, b) {
    console.log(a, b);
}

blueFn(12);  //12, undefined——因为b没有传值,所以是undefined
const blue={age: 18, gender: 'male'};

console.log(blue.height); //undefined——因为就没有叫height的东西

简单来说大致有五种情况


1.真的是没定义(仅typeof可用)

2.定义了但没赋值

3.直接赋值或返回undefined

4.没有对函数的参数进行赋值

5.没有对应属性

null

null代表的是一个空对象,null主要用于赋值给一些可能会返回对象的变量,作为初始化。

什么情况会出现null

let name = null;
console.log(name);  //null
function fn1(a) {
    console.log(a);
}
fn1(null); //null
const person={name: 'blue', age: null};
console.log(person1.age); //null

总结

null是一个普通值,需要主动使用,只有主动使用时,null才会出现,没有声明null不会自己蹦出来

undefined是一个特殊值,是js中最后的备选方案,当我们向js要求一个“不存在的东西”时,会得到undefined(例如:没赋值的变量、没return的函数、没传的参数)


null本质上是个零,undefined本质上是个特殊对象,null可以和Number类型进行加减乘除,也可以进行比较

展开阅读全文

本文系作者在时代Java发表,未经许可,不得转载。

如有侵权,请联系nowjava@qq.com删除。

编辑于

关注时代Java

关注时代Java