undefined的细节
undefined的几个特性
undefined 是window下的一个属性,即使一个原始数据类型,也是一个原始值数据
不可写
1
2
3
4console.log(window.undefined) //undefined
window.undefined = 'coderwei'
console.log(window.undefined) // undefined不可配置
1
2delete window.undefined
console.log(window.undefined) //undefined不可枚举
1
2
3
4
5
6for (const item in window) {
if (item === undefined) {
console.log(item); //不会输出
}
}
//补充 既然不可枚举 那我们使用Object.defineProperty定义window下面的undefined 使其变成可枚举的属性,可以嘛? 实际上浏览器会给我抛出异常,告诉我们undefined是不可重新定义
使用场景
当我们定义一个变量为对他进行赋值的时候,浏览器会帮我们给他赋值一个undefined
1
2let a;
console.log(a); //undefined同样的当我们函数定义的形参的时候,如果没有对其赋值,也会打印出undefined
1
2
3
4function test(a) {
console.log(a); //undefined
}
test()undefined在局部作用域下是可以用来作为变量的,
意味着undefined并没有作为保留字或者是关键字 即便是严格模式下亦是如此 1
2
3
4
5
6
7
8let undefined = 'hello word' //全局作用域下定义的undefined 用let会报错 重复声明 用var第二行则输入undefined
console.log(undefined) //undefined
function test() {
let undefined = 'coderwei'
console.log(undefined); //coderwei
}
test()
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 coderwei的日常!









