JavaScript中null与undefined的区别及类型转换详解

作者:阿沐

时间:2026-10-26

浏览:218

本文详细解析JavaScript中null和undefined两个特殊值的定义、类型转换规则及区别。null表示空对象引用,在布尔、数字和字符串环境中分别转换为false、0和"null";undefined表示未定义,转换为false、NaN和"undefined"。通过==和===运算符及typeof操作符,可以清晰区分两者,避免开发中的类型错误。

示例代码如下:

 
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>javascript之null和undefined</title>
</head>
<body>
<script type="text/javascript">
/** 
null关键字的特性与类型转换/******************null关键字********************/
在JavaScript中,关键字null代表一个特殊的值,意为“无值”。它通常被视为对象类型的一个特例,表示“没有对象”。
null是一个独一无二的值,与其他所有值都不同。如果一个变量的值为null,说明该变量不包含有效的对象、数组、数字、字符串或布尔值。
当null出现在布尔环境中时,它会自动转换为false。
当null用于布尔环境时,它被自动转换为false.当它用于一个数字环境时,它被自动转换为数字0.当它用于一个字符串环境时,它
当null出现在字符串环境中时,它会自动转换为字符串"null"。
*/ 
var $null = null;
// 测试布尔环境
if($null){
document.write("当null用于布尔环境时,不转换");
}else{
document.write("当null用于布尔环境时,它被自动转换为false");// 此句将被输出
} 
// 测试数字环境
if(0 + $null == 0){
document.write("<br/>当null用于数字环境时,它被自动转换为0");// 此句将被输出
}else{
document.write("<br/>当null用于数字环境时,不转换");
} 
// 测试字符串环境
document.write("<br/>用于字符串环境:"+$null);// 输出 null
// 检查null的typeof:object
document.write("<br/>$null的数据类型为:"+typeof $null);// 输出 object
/** 
undefined的定义与行为/*****************undefined******************/
undefined是一个特殊的值,它不是JavaScript的关键字。以下两种情况会返回undefined:
1. 使用了已声明但未赋值的变量时。
2. 访问不存在的对象属性时。
上述两种情况返回的都是undefined值,且undefined与null不同。
当undefined用于布尔环境时,它会自动转换为false。
当它用于数字环境时,它会自动转换为NaN(NaN是代表非数字值的特殊属性,用于指示某个值不是数字)。
当它用于字符串环境时,它会自动转换为"undefined"。
*/ 
var $aaa;// 声明了,但未初始化。
var $bbb = "测试";// 声明并初始化。
var $obj = new Object();
document.write("<br/>$aaa的类型:"+typeof $aaa+"、$aaa的值:"+$aaa);// 输出 undefined、undefined
document.write("<br/>$bbb的类型:"+typeof $bbb+"、$bbb的值:"+$bbb);// 输出 string、测试
document.write("<br/>$obj的一个不存在的属性myProp的类型:"+typeof $obj.myProp+"、$obj.myProp的值:"+$obj.myProp);// 输出 undefined、undefined
// document.write("<br/>输出一个并未声明的变量的值:"+$abc);// 运行错误
/** 
null与undefined的区别与比较/** undefined 与 null的联系 */
虽然undefined和null的值不同,但==运算符将它们视为相等。
var obj = new Objec();
obj.prop == null // 返回 true
若要严格区分undefined和null,需使用===运算符或typeof。
var obj = new Objec();
obj.prop === null // 返回 false
typeof obj.prop // 输出 undefined
typeof null // 输出 object
*/ 
</script>
</body>
</html>

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章