null与undefined的区别与应用场景

摘要:话不多说,直接先上结论: null 和 undefined 基本相同,只有细微差别,null 是表示缺少的标识,指示变量未指向任何对象,转为数值为 0;undefined 表示 “缺少值”,即该处应该有值,但还没有定义,转为数值为 NaN

null与undefined的区别

话不多说,直接先上结论: null 和 undefined 基本相同,只有细微差别

  • null 是表示缺少的标识,指示变量未指向任何对象,转为数值为 0
  • undefined 表示 “缺少值”,即该处应该有值,但还没有定义,转为数值为 NaN
//(1)null转为数值为0
console.log(Number(null));//0
console.log(null+3);//3
console.log(null == null);//true
console.log(null === null); //true
console.log(isNaN(null));false

//(2)undefined转为数值为NaN
console.log(Number(undefined));//NaN(not a number)
console.log(3+undefined);//NaN
console.log(isNaN(undefined));//true

//(3)null和undefined比较
console.log(null == undefined); //true,存在隐式类型转换
console.log(null === undefined);//false
/* "==="表示全等,二者类型不同,所以为false */
console.log(typeof null);//object数据类型
console.log(typeof undefined);//undefined数据类型

null 应用场景:

(1)作为函数的参数,表示该函数的参数不是对象

(2)作为对象原型链的终点

console.log(Object.getPrototypeOf(Object.prototype));//null


undefined 应用场景:

(1)一个没有被赋值的变量的类型是undefined

(2)调用函数时,应该提供的参数没有提供,该参数为undefined

(3)对象没有赋值的属性,该属性的值为undefined

(4)一个函数如果没有使用return语句指定返回值,就会返回undefined

//(1)变量未赋值        
let a
console.log(a);//undefined

//(2)函数参数未赋值
(function fn(x) {
    console.log(x); //undefined
})()

//(3)对象属性未赋值
let obj = {
    name:'张三'
}
console.log(obj.name);
console.log(obj.age);//undefined

//(4)函数没有返回值
function fn(){}
var x = fn();
console.log(x);//undefined
作者:不知名前端李小白,原文链接:https://www.cnblogs.com/libo-web/p/15392956.html


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_10721