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。