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。
posted @ 2020-11-03 15:52  zaisy'Blog  阅读(662)  评论(1编辑  收藏  举报