undefined和null的比较

一、undefined的基本使用

1.在 JavaScript 中, undefined表示变量不存在,只有唯一字面值undefined,返回类型也是 undefined

2.出现undefined的四种情况:

  • 使用只声明而未初始化的变量时;
    let a;
    console.log(a);    //返回undefined
  • 获取一个对象的某个不存在的属性(自身属性和原型链继承属性)时;
    const Obj={name:"kangakng"};
    console.log(Obj.age);    //返回undefined
  • 函数没有明确的返回值时,却在其他地方使用了返回值;
    function foo(){};
    console.log(foo());    //返回undefined
  • 函数定义时使用了多个形参,而在调用时传递的参数的数量少于形参的数量,没有匹配到的参数就返回undefined
    function foo(num1,num2,num3){console.log(num1)};
    console.log(foo(num2,num3))    //返回undefined

     

二.null的基本使用

1.在 JavaScript 中, null表示变量不存在,只有唯一字面值Null,表示空指针对象,返回类型是 Object

2.出现null的三种情况:

  • 一般情况下,如果声明的变量是为了以后保存某个值,则应该在声明时就将其赋值为“null”;
    let fnum = null;
    let snum = 22;
    fnum = snum;    //fnum返回22
    
  • JavaScript在获取DOM元素时,如果没有获取到指定的元素对象,就会返回“null”;
    document.getElementById("#id");    //返回null
  • 在使用正则表达式进行捕获时,如果没有捕获结果,就会返回“null”。
    ‘text’.match(/a/);    //返回null

     

三、Undefined和Null两种类型的区别

1.相同点

  • Undefined和Null两种数据类型都只有一个字面值,分别是undefined和null;
  • Undefined类型和Null类型在转换为Boolean类型的值时,都会转换为false。所以通过非运算符(!)获取结果为true的变量时,无法判断其值为undefined还是null;
  • 在需要将两者转换成对象时,都会抛出一个TypeError的异常,也就是平时最常见的引用异常;
  • Undefined类型派生自Null类型,所以在非严格相等的情况下,两者是相等的,即他们的值是相等的。

2.不同点

  • null是JavaScript中的关键字,而undefined是JavaScript中的一个全局变量,即挂载在window对象上的一个变量,并不是关键字;
  • 在通过call调用toString()函数时,Undefined类型的值会返回“[objectUndefined]”,而Null类型的值会返回“[object Null]”,即返回类型不同;
  • 在需要进行字符串类型的转换时,null会转换为字符串"null",而undefined会转换为字符串"undefined";
  • 在需要进行数值类型的转换时,undefined会转换为NaN,无法参与计算;null会转换为0,可以参与计算;
  • 无论在什么情况下都没有必要将一个变量显式设置为undefined。

 

posted @ 2022-04-07 12:04  CodeFan*  阅读(186)  评论(0编辑  收藏  举报