hand
_1_11_12
4
返回栏目
0k
2k
1k
2k
1k
1k
1k
2k
2k
2k
1k
2k
1k
2k
1k
1k
1k
1k
1k
2k
1k
1k
1k
1k
1k
1k
1k
1k
1k
2k
1k
1k
1k
1k
1k
1k
1k
1k
1k
2k
1k
1k
1k
1k
1k
1k
1k
2k
1k
2k
1k
1k
1k
1k
1k
1k
1k
2k
2k
1k
1k
1k
2k
1k
1k
2k
2k
1k
1k
1k
2k
1k
1k
2k
2k
1k
2k
1k
1k
2k
2k
2k
3k
3k
2k
3k
2k
3k
3k
3k
1k
2k
3k
2k
2k
3k
3k
2k
2k
6k
3k
2k
2k
5k
3k
4k
3k
3k
2k
4k
3k
3k
2k
3k
3k
1k
4k
4k
4k
2k
5k
3k
2k
3k
4k
3k
3k
4k
2k
3k
3k
4k
2k
2k
3k
4k
3k
3k
2k
5k
2k
3k
3k
3k
3k
2k
3k
3k
3k
2k
2k
2k
2k
3k
2k
2k
2k
3k
2k
2k
2k
2k
2k
2k
0.1k
0.2k
3k
2k
3k
2k
0.1k
2k
2k
4k
2k
2k
1k
2k
2k
3k
3k
3k
3k
2k
2k
3k
3k
3k
4k
3k
3k
4k
3k
2k
2k
3k
3k
3k
3k
3k
3k
2k
3k
3k
4k
4k
3k
3k
2k
2k
3k
2k
2k
1k
2k
3k
1k
2k
2k
2k
2k
2k
2k
2k
2k
2k
4k
2k
3k
2k
1k
2k
2k
2k
2k
2k
3k
2k
3k
1k
2k
2k
2k
0k
2k
2k
2k
2k
2k
2k
2k
3k
2k
2k
1k
1k
3k
2k
3k
1k
2k
1k
2k
2k
2k
2k
3k
1k
3k
2k
2k
2k
2k
2k
2k
1k
2k
2k
4k
3k
3k
2k
2k
2k
2k
2k
2k
4k
3k
3k
3k
2k
2k
2k
2k
2k
2k
3k
4k
返回前端 - Javascript栏目
作者:
贺及楼
成为作者
更新日期:2025-02-21 17:11:08
在 JavaScript 的奇妙世界里,null
和 undefined
这两个基本数据类型就像是一对神秘的双胞胎,乍一看似乎长得一样,但实际上有着各自独特的性格和用途。今天,我们就来揭开它们的神秘面纱,看看它们到底有什么区别。
undefined
就像是一个“未开封的包裹”。当你声明了一个变量,但还没有给它赋值时,这个变量的值就是 undefined
。另外,当函数没有明确的返回值,或者访问对象中不存在的属性时,得到的结果也是 undefined
。
// 声明变量但未赋值
let myVariable;
console.log(myVariable); // 输出: undefined
// 函数没有返回值
function noReturnValue() {}
let result = noReturnValue();
console.log(result); // 输出: undefined
// 访问对象中不存在的属性
let myObject = { name: 'John' };
console.log(myObject.age); // 输出: undefined
null
则像是一个“空盒子”。它表示一个人为设定的空值,是开发人员主动将变量赋值为 null
,表明这个变量目前没有指向任何对象。
let myNullVariable = null;
console.log(myNullVariable); // 输出: null
虽然 null
和 undefined
看起来都代表“没有值”,但它们的类型是不同的。使用 typeof
操作符可以查看它们的类型。
console.log(typeof undefined); // 输出: undefined
console.log(typeof null); // 输出: object (这是 JavaScript 的一个历史遗留问题,实际上 null 是基本数据类型)
从上面的代码可以看出,undefined
的类型就是 undefined
,而 null
的类型显示为 object
,这是 JavaScript 早期设计的一个小瑕疵。
在比较 null
和 undefined
时,使用 ==
和 ===
会有不同的结果。==
只比较值是否相等,而 ===
不仅比较值,还比较类型。
console.log(null == undefined); // 输出: true
console.log(null === undefined); // 输出: false
这表明 null
和 undefined
的值在宽松比较下是相等的,但它们的类型不同,所以在严格比较下不相等。
特性 | null | undefined |
---|---|---|
含义 | 人为设定的空值 | 变量未赋值、函数无返回值、访问不存在的属性等情况 |
类型 | object(历史遗留问题,实际为基本数据类型) | undefined |
宽松比较(==) | 与 undefined 相等 | 与 null 相等 |
严格比较(===) | 与 undefined 不相等 | 与 null 不相等 |
通常用于检查变量是否已经被赋值。
let newVariable;
if (newVariable === undefined) {
console.log('变量还未赋值');
}
常用于重置对象引用,释放内存。
let bigObject = { data: '很多数据' };
// 使用完 bigObject 后
bigObject = null;
通过以上的介绍,相信大家已经清楚了 null
和 undefined
的区别。在编写 JavaScript 代码时,合理使用它们可以让我们的代码更加健壮和清晰。记住,undefined
是自然的“未定义”状态,而 null
是我们主动赋予的“空值”,它们各有各的用处,就像两个好伙伴,在不同的场景中发挥着重要的作用。
前端 - Javascript
整章节共299节
快分享给你的小伙伴吧 ~