如何获取安全的 undefined
... 2025-7-10 大约 1 分钟
注意,在 ES3 之前其实是没有原始值 undefined 这个值的,第三版引入这个值,其实是为了正式区分空对象指针(后面我们会介绍到这指的就是 null)与未经初始化的变量。在 ES3 中,window.undefined 就是一个普通的属性,我们完全可以把它的值改为任何真值。但从 ES5 之后,window.undefined 成了一个不可写,不可配置的数据属性,它的值永远是 undefined。
let undefined = 10
// Uncaught SyntaxError: Identifier 'undefined' has already been declared
// 未捕获的语法错误:标识符“未定义”已声明
1
2
3
4
2
3
4
var undefined = 10
consonle.log(undefined)
// 使用 var 声明时不会报错 但是获取变量名为 undefined 的值的时候,仍为 undefined
// 可以理解为 var 给变量 undefined 赋值失败
1
2
3
4
2
3
4
# 为什么要获取 undefined
因为 undefined 在 JavaScript 中不是保留字,可以当作变量来赋值。
这样,如果我们后期需要用到 undefined 来检测一个变量的话,那么检测的值就不准确了
let undefined = 10
let name
name == undefined
1
2
3
4
2
3
4
# 怎样获取 undefined
void (0)
无论 void 后的表达式是什么,void 操作符都会返回 undefined。
传入一个为赋值的形参
function fn(arg) {
console.log(arg)
// 在调用时不传参且在函数体内不赋值
// 此时 arg 就是 undefined
}
1
2
3
4
5
2
3
4
5
- 未赋值的变量
let num
// 此时 num 为 undefined
1
2
2