null和undefined的区别有哪些?

简介: 相同点1.null和undefined都是js的基本数据类型2.undefined和null都是假值(falsy),都能作为条件进行判断,所以在绝大多数情况下两者在使用上没有区别

相同点

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类型进行加减乘除,也可以进行比较

Number(null); //0
Number(undefined); //NaN
12+null; //12
12+undefined; //NaN
//跟数字比较会更加明显
-5<null; //true——null是0,-5<0
-5<undefined;  //false
-5>undefined;  //false
-5==undefined; //false
//undefined就不是数字,跟数字没有可比性

解构赋值与undefined、null

const [a=1,b=2]=[undefined, null];
//undefined就是没给——触发默认值
console.log(a);  //1
//null是给了,但是空——不触发默认值
console.log(b);  //null


相关文章
|
4月前
|
存储 C++ Cloud Native
云原生部署问题之C++ 中的 nullptr 和 NULL 区别如何解决
云原生部署问题之C++ 中的 nullptr 和 NULL 区别如何解决
58 0
|
2月前
|
机器学习/深度学习 JavaScript 前端开发
JavaScript typeof, null, 和 undefined
JavaScript typeof, null, 和 undefined
53 4
|
2月前
|
存储 JavaScript 前端开发
|
3月前
|
前端开发 JavaScript 开发者
JavaScript中的哲学难题:深入探讨undefined与null的情感纠葛
【8月更文挑战第23天】在Web前端开发中,理解和区分`undefined`与`null`至关重要。`undefined`表示变量已声明但未赋值,常出现在未初始化的变量或函数无返回值的情形;`null`则是开发者主动赋值的结果,意味着变量虽存在但值为空。虽然`undefined == null`为真,但`undefined === null`为假,表明它们在语义上有明显差异。合理使用两者能增强代码的健壮性和可读性,避免运行时错误。
32 0
|
3月前
|
JavaScript 前端开发 数据库
编程小白到高手:掌握null与undefined、JavaScript中隐藏的技巧曝光!
编程小白到高手:掌握null与undefined、JavaScript中隐藏的技巧曝光!
|
4月前
|
Unix Linux Shell
nohup 与 >/dev/null 与 2>&1 作用与区别
nohup 与 >/dev/null 与 2>&1 作用与区别
173 0
|
5月前
|
JavaScript 前端开发 开发者
JavaScript数据类型概述及Undefined与Null详解
JavaScript数据类型概述及Undefined与Null详解
|
5月前
|
JavaScript 前端开发 索引
JavaScript有7个数据类型:Number, String, Boolean, Null, Undefined, Symbol(BES6)和BigInt(ES10)组成基本类型
【6月更文挑战第25天】JavaScript有7个数据类型:Number, String, Boolean, Null, Undefined, Symbol(BES6)和BigInt(ES10)组成基本类型,而Object包括Array、Function等是引用类型。Objects可以包含键值对,Array是特殊的Object。Functions也是对象。`null`和`undefined`被视为特殊的原始值。
54 1
TS,数据类型概述,常见的基本数据类型有number/string/boolean/undefined/null,字符串用““,let food: string = ‘糖葫芦‘,布尔类型
TS,数据类型概述,常见的基本数据类型有number/string/boolean/undefined/null,字符串用““,let food: string = ‘糖葫芦‘,布尔类型
|
5月前
|
JSON 数据格式
setInterval函数的function与()=>区别——解决Cannot readproperty‘XXXXXXX‘of undefined异常
setInterval函数的function与()=>区别——解决Cannot readproperty‘XXXXXXX‘of undefined异常
45 0