Undefined类型与Null类型的区别,相同

一.相同点

1.Undefined类型和Null类型都只有唯一字面值,Undefined类型对应的字面值为undefined,Null类型对应的字面值为null。
2.两者在用取反运算符(!)处理时,都返回true,因此只通过取反运算符无法区分是null还是undefined。

console.log(!undefined); //true
console.log(!null); //true

3.访问Undefined或者Null类型值的属性或者方法,都会抛出一个引用异常。

var a,b=null;
console.log(a.name);  //Cannot read property 'name' of  undefined
console.log(b.name);  //Cannot read property 'name' of  null

4.在非严格相等的情况下,null与undefined是相等的。

console.log(null == undefined); //true

二.不同点

1.两者使用的场景不同,以下是出现undefined的两个常见场景。
访问一个声明但是并未初始化的变量
访问一个对象不存在的属性

//4.访问声明但未定义的变量
var param;
console.log(param);  //undefined

//5.访问一个对象不存在的属性
var obj = {};
console.log(obj.name); //undefined

而null表示一个空对象的引用,一般是提前定义并用于在后面存储某个变量值。
根据eslint的规则,如果需要提前定义变量并在后面为变量赋值,建议初始化为null,而不是赋值为undefined。

var param1 = null; //推荐写法
var param2 = undefined;  //不推荐写法

2.使用typeof运算符处理Null类型值返回object,Undefined类型值返回undefined。

console.log(typeof null);  //object
console.log(typeof undefined);    //undefined

3.类型转换规则不同,在转换为字符串类型时,null与undefined都会转换成对应的字符串’null’与’undefined’,而转换为数值类型时,null会转换为0参与计算,而undefined无法参与数值计算,返回NaN。

console.log(undefined + 'hello');  //undefined hello
console.log(null + 'hello');    //null hello

console.log(undefined + 1);  //Nan
console.log(null + 1);    //1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值