interview
javascript-frontend-basics
JavaScript 中 null 和 undefined 的区别是什么

前端 JavaScript 基础面试题, JavaScript 中 null 和 undefined 的区别是什么?

前端 JavaScript 基础面试题, JavaScript 中 null 和 undefined 的区别是什么?

QA

Step 1

Q:: JavaScript 中 null 和 undefined 的区别是什么?

A:: 在 JavaScript 中,null 表示一个空的值或不存在的对象,而 undefined 表示一个未定义的变量或未赋值的变量。null 是一个表示 '无' 的对象类型,而 undefined 是一个变量类型。通常,null 用于显式地赋值给变量表示'空值',而 undefined 则是系统默认分配给未初始化变量的值。

Step 2

Q:: 如何检测一个变量是 null 还是 undefined?

A:: 可以使用严格等于运算符 (===) 来分别检测 null 和 undefined,例如:

 
if (variable === null) {
  console.log('The variable is null');
} else if (variable === undefined) {
  console.log('The variable is undefined');
}
 

Step 3

Q:: JavaScript 中的类型转换是如何处理 null 和 undefined 的?

A:: 在类型转换中,null 转换为 0,undefined 转换为 NaN。可以通过显式类型转换函数进行验证,例如:

 
Number(null); // 结果为 0
Number(undefined); // 结果为 NaN
String(null); // 结果为 'null'
String(undefined); // 结果为 'undefined'
 

Step 4

Q:: null 和 undefined 在 JSON 序列化中是如何处理的?

A:: 在 JSON 序列化中,null 会被正常序列化为 null,而 undefined 则会被忽略。如果对象的属性值是 undefined,该属性会在序列化结果中被移除。

 
const obj = {a: null, b: undefined};
JSON.stringify(obj); // 结果为 '{"a":null}'
 

Step 5

Q:: 如何避免 JavaScript 代码中出现 null 或 undefined 的错误?

A:: 可以通过以下几种方法避免: 1. 初始化变量时赋予合理的初始值。 2. 使用严格相等运算符 (===) 进行类型检查。 3. 使用默认参数和解构赋值中的默认值。 4. 使用 TypeScript 等类型检查工具。

用途

了解 JavaScript 中 null 和 undefined 的区别对于编写健壮和防错的代码非常重要。在实际生产环境中,处理数据时经常会遇到未定义或空值的情况,这时需要正确处理这些值以避免程序错误或异常行为。此外,API 数据返回、表单数据处理等场景中也会频繁用到对 null 和 undefined 的处理。\n

相关问题

🦆
JavaScript 中 == 和 === 的区别是什么?

== 是宽松相等运算符,会进行类型转换后比较,而 === 是严格相等运算符,不会进行类型转换,只有在类型和值都相等时才返回 true。例如:

 
1 == '1'; // 结果为 true
1 === '1'; // 结果为 false
 
🦆
如何检测 JavaScript 变量的类型?

可以使用 typeof 运算符来检测变量的类型,例如:

 
typeof 123; // 结果为 'number'
typeof 'abc'; // 结果为 'string'
typeof null; // 结果为 'object'
typeof undefined; // 结果为 'undefined'
 
🦆
在 JavaScript 中如何处理异常?

可以使用 try...catch 语句来处理异常,例如:

 
try {
  // 可能会抛出异常的代码
} catch (error) {
  console.error('发生错误:', error);
}
 
🦆
什么是 JavaScript 的 truthy 和 falsy 值?

在 JavaScript 中,'truthy' 值是在布尔上下文中转换为 true 的值,而 'falsy' 值则转换为 false。常见的 'falsy' 值包括 false、0、'' (空字符串)、null、undefined 和 NaN。所有其他值都是 'truthy'