前言
在JavaScript中,null和undefined是两个常见的数据类型,但总是在使用时由于对两者区别不清而导致错误,今天就让我们一起来看看这两种类型的区别。
定义
首先让我们来看看两者的定义: null是JavaScript中的一个特殊值,表示“空值”或“无值”。当我们想要表示某个变量不包含任何值时,就可以将其设置为null。 undefined是JavaScript中的另一种特殊值,表示“未定义的值”。当我们声明一个变量但没有给它赋值时,该变量的值就是undefined。
异同点
相同点:
-
undefined和null被转换为布尔值的时候,两者都为false
-
undefined==null,结果为true都表示一个空值,两者判断值相等上是一样的
尽管null和undefined都表示“无值”,但它们之间还是有一些区别的。
不同点:
-
null表示一个空对象指针,而undefined表示一个未定义的值。
-
当我们声明一个变量但没有给它赋值时,该变量的值就是undefined。当我们想要明确地表示某个变量不包含任何值时,就可以将其设置为null。
-
如果我们使用typeof运算符检查一个null值时,返回的结果是“object”。而如果检查一个未声明的变量时,返回的结果是undefined。
-
undefined不是关键字,而null是关键字
-
undefined本质上是window的一个属性,而null是一个对象
接下来就让我们来结合一些小小的例子来进行理解:
let firval = null;let secval;console.log(firval == secval); // 输出:trueconsole.log(firval === secval); // 输出:falseconsole.log(firval); // 输出:nullconsole.log(secval); // 输出:undefinedconsole.log(typeof firval); // 输出:objectconsole.log(typeof secval); // 输出:undefined
在上面的示例中,我们声明了两个变量firval和secval。firval的值被设置为null,而secval没有被赋值,因此它的值是undefined。当我们使用console.log()函数打印这两个变量时,分别输出了null和undefined。当我们使用typeof运算符检查这两个变量的类型时,分别输出了object和undefined,同时需要注意null与undefined本质上是不同,当使用双等时输出为true相信大家应该都有所了解,没错,因为在 JavaScript 里,双等号判断相等时会进行隐式类型转换,所以是不严格的。
实际应用
在实际的开发中,我们经常需要使用null和undefined在某些特殊的情景。例如,当我们从服务器获取数据时,如果数据不存在,我们可能会将返回值设置为null或undefined。这样做可以帮助我们更好地处理数据并避免出现错误。
以下便是一个null应用场景:
function getData() { let data = null; // 如果数据不存在,返回null if (!data) { return null; } // 处理数据 // ... // 如果处理成功,返回处理结果 return result;}
在上面的示例中,我们定义了一个名为getData
的函数,用于获取数据并处理它。如果数据不存在,我们将返回值设置为null。否则,我们将处理数据并返回处理结果。
除此之外,null还有一个前端人员都熟悉的作用:作为对象原型链的终点
对于undefined的作用,这里大致列举以下几种:
-
如果变量声明了,但没有赋值,它就等于undefined 。
-
函数中的参数没有给时,该参数就等于undefined 。
-
对象没有进行赋值,该属性的值为undefined。
-
当函数没有返回值时,默认返回undefined。
总结
在本文中,我们简单探讨了JavaScript中的null和undefined类型,需要记住的是,null表示一个空对象指针,而undefined表示一个未定义的值。当我们想要明确地表示某个变量不包含任何值时,就可以将其设置为null。而当我们声明一个变量但没有给它赋值时,该变量的值就是undefined。
补:
1.JS 中如何判断 undefined
JavaScript 中有两个特殊数据类型:undefined 和 null,下节介绍了 null 的判断,下面谈谈 undefined 的判断。
以下是不正确的用法:
var exp = undefined;if (exp == undefined){ alert("undefined");}
exp 为 null 时,也会得到与 undefined 相同的结果,虽然 null 和 undefined 不一样。注意:要同时判断 undefined 和 null 时可使用本法。
var exp = undefined;if (typeof(exp) == undefined){ alert("undefined");}
以下是正确的用法:
var exp = undefined;if (typeof(exp) == "undefined"){ alert("undefined");}
2.JS 中如何判断 null
以下是不正确的用法:
var exp = null; if (exp == null) { alert(“is null”); }
exp 为 undefined 时,也会得到与 null 相同的结果,虽然 null 和 undefined 不一样。注意:要同时判断 null 和 undefined 时可使用本法。
var exp = null; if (!exp) { alert(“is null”); }
如果 exp 为 undefined 或者数字零,也会得到与 null 相同的结果,虽然 null 和二者不一样。注意:要同时判断 null、undefined 和数字零时可使用本法。
var exp = null; if (typeof(exp) == “null”) { alert(“is null”); }
为了向下兼容,exp 为 null 时,typeof 总返回 object。
var exp = null; if (isNull(exp)) { alert(“is null”); }
JavaScript 中没有 isNull 这个函数。
以下是正确的用法:
var exp = null; if (!exp && typeof(exp)!=”undefined” && exp!=0) { alert(“is null”); }