js--基本数据类型null和undefined的区别
1. null类型
只有一个值null,逻辑上表示一个空对象的指针,如果要定义一个变量来保存对象,最好将该变量初始化为null,比如let a="",而不要let b这样,其实null就是一个空对象的指针,并没有指向任何一个对象,不同于空对象,空对象是一个对象,但是它的值是指向没有任何属性的对象的引用,{}是指向不含任何属性(即js的字面值和函数)的对象。
2. undefined类型
只有一个值undefined,指未初始化的变量,比如let b,只是声明了变量b,并没有初始化,此时使用b(console.log(b))变量会输出为undefined,
若没有声明变量直接使用会报错,比如没有声明msg,直接console.log(msg),会报错,此时typeof msg输出为undefined
undefined派生自null值,null作为空对象指针用于区分两者
3.转化为数字时不同
Number(null) 输出0
Number(undefined)输出NaN非数值
undefined == null输出true
undefined === null输出false
4. 使用场景不同
undefined和null在if语句中,都会被自动转为false,相等运算符甚至直接报告两者相等。
null类型
作为函数从参数 if(car != null){//操作car}
作为对象原型的终点,Object.getPrototypeOf(Object.prototype)输出null
undefined类型
函数没有返回值时,默认返回undefined
对象没有赋值属性,该属性的值为undefined
调用函数时,应该提供的参数没有提供,该参数等于undefined
变量被声明了,但没有赋值时,就等于undefined。