undefined 与 ReferenceError 的区别
JavaScript 中 undefined 和 ReferenceError 的本质区别
问题
JavaScript 中的 undefined 和 ReferenceError: xxx is not defined 有什么区别?
解答
ReferenceError
当尝试访问一个不存在的变量时,JavaScript 会抛出 ReferenceError。这表示该变量从未被声明过。
console.log(foo); // ReferenceError: foo is not defined
undefined
undefined 是 JavaScript 的一个基本数据类型,表示变量已声明但未赋值。
let bar;
console.log(bar); // undefined
let obj = {};
console.log(obj.name); // undefined
function test() {}
console.log(test()); // undefined
对比示例
// 未声明的变量
console.log(a); // ReferenceError: a is not defined
// 已声明但未赋值
let b;
console.log(b); // undefined
// 对象不存在的属性
let obj = { x: 1 };
console.log(obj.y); // undefined
关键点
ReferenceError是错误,表示变量未声明,会中断代码执行undefined是值,表示变量已声明但未赋值- 访问对象不存在的属性返回
undefined,不会抛出错误 - 函数没有返回值时,默认返回
undefined
目录