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


相关文章
|
29天前
|
JavaScript
JS中Null和Undefined的区别及用法
JS中Null和Undefined的区别及用法
13 1
|
2月前
|
JavaScript 前端开发 算法
undefined与null的区别
在JavaScript中,undefined和null都表示变量未被赋值或值缺失,但它们在使用场景上有一些区别。 - **`语义不同`**:undefined表示一个变量未被赋值或者声明后未进行初始化。而null表示一个变量被明确地设置为无值或者表示空值的概念。 - **`类型不同`**:undefined是一种基本数据类型,而null是一个引用类型。 - **`条件判断`**:在条件判断中,使用if (variable === undefined)或者if (variable === null)可以进行区分。
|
2天前
|
前端开发 JavaScript
【Web 前端】undefined 和 null 区别?
【4月更文挑战第22天】【Web 前端】undefined 和 null 区别?
【Web 前端】undefined 和 null 区别?
|
14天前
|
JavaScript 前端开发 Python
js中null和undefined的区别是什么
js中null和undefined的区别是什么
18 3
|
3月前
|
机器学习/深度学习 SQL 关系型数据库
【MySQL进阶之路丨第十一篇】一文带你精通MySQL NULL值处理、正则表达式
【MySQL进阶之路丨第十一篇】一文带你精通MySQL NULL值处理、正则表达式
38 0
|
3月前
|
SQL 关系型数据库 MySQL
总结 vue3 的一些知识点:MySQL NULL 值处理
总结 vue3 的一些知识点:MySQL NULL 值处理
|
5月前
|
SQL 关系型数据库 MySQL
MySQL NULL 值处理
MySQL NULL 值处理
|
2月前
|
SQL 关系型数据库 MySQL
python在mysql中插入或者更新null空值
这段代码是Python操作MySQL数据库的示例。它执行SQL查询从表`a_kuakao_school`中选取`id`,`university_id`和`grade`,当`university_id`大于0时按升序排列。然后遍历结果,根据`row[4]`的值决定`grade`是否为`NULL`。若不为空,`grade`被格式化为字符串;否则,设为`NULL`。接着构造UPDATE语句更新`university`表中对应`id`的`grade`值,并提交事务。重要的是,字符串`NULL`不应加引号,否则更新会失败。
22 2
|
5月前
|
存储 关系型数据库 MySQL
Flink CDC中mysql cdc 抽取这个时间字段的值为null 有什么好的解决方案吗 ?
Flink CDC中mysql cdc 抽取这个时间字段的值为null 有什么好的解决方案吗 ?
101 0
|
1月前
|
关系型数据库 MySQL
mysql中判断NULL和空字符串
mysql中判断NULL和空字符串
9 0