前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一篇文章快速认识 undefined

一篇文章快速认识 undefined

作者头像
玖柒的小窝
修改2021-10-20 10:15:14
4620
修改2021-10-20 10:15:14
举报
文章被收录于专栏:各类技术文章~各类技术文章~
undefined 是什么?

undefined即是一个原始数据类型,也是一个原始值数据

undefined是全局对象上的一个属性

截屏2021-10-15 下午6.20.49.png
截屏2021-10-15 下午6.20.49.png
代码语言:javascript
复制
console.log(window.undefined) // undefined
复制代码
undefined 是否可写?是否配置?
不可写 writable: false
代码语言:javascript
复制
window.undefined = 1; // 不可写
console.log(window.undefined) // undefined
复制代码
不可配置 configurable: false
代码语言:javascript
复制
delete window.undefined;
console.log(window.undefined) // 还是正常打印出undefined
复制代码
不可枚举 enumerable: false
代码语言:javascript
复制
for(var k in window){
  if(k === undefined){
    console.log(k); // 没有打印
  }
}
复制代码
不可重新定义 Object.defineProperty() 报错了
代码语言:javascript
复制
Object.defineProperty(window, 'undefined', {
  enumerable: true,
  writable: true,
  configurable: true
})
复制代码
截屏2021-10-15 下午6.31.29.png
截屏2021-10-15 下午6.31.29.png
关于 undefined
未赋值的变量系统会自动赋值为 undefined,类型也是 undefined
代码语言:javascript
复制
var a;
console.log(a); // undefined
function test(a){
  console.log(typeof a); // 类型undefined
  return a;
}
复制代码
函数没有传值打印 undefined
代码语言:javascript
复制
console.log(test()); // undefined
复制代码
在函数内部没有写返回值系统默认返回 undefined
代码语言:javascript
复制
function test2(){
  console.log(123);
  // return undefined
}
console.log(test2()); // undefined
复制代码
undefined 不能作为变量使用
代码语言:javascript
复制
var undefined = 1; 
console.log(undefined); // undefined
复制代码
undefined 不是JS的保留字和关键字,在全局下不可写,但是在局部作为变量时,它不会去全局找,局部作用域可以打印出 1 ,就算在严格模式下也仍然可以
代码语言:javascript
复制
function test3(){
  'use strict'; // 严格模式
  var undefined = 1; 
  console.log(undefined); // 1
}
test3();
复制代码
void(0) 对0进行求值,始终返回 undefined
代码语言:javascript
复制
var a, b, c;
a = void(b = 1, c = 2);
console.log(a, b, c); // undefined 1 2

// <a href="javascript:void(0)"> // 返回 undefined 阻止 <a> 标签跳转

console.log(void(0) === window.undefined); // true  void(0) 全等于 window.undefined
复制代码
为了避免局部作用域中取不到真正的 undefined,老的程序会用void(0)返回的undefined 来作为 undefined 去和其他变量判断是否等于 undefined
代码语言:javascript
复制
function test4(){
  var undefined = 1;
  console.log(undefined); // 1
  console.log(void(0)); // undefined
  console.log(void(0) === undefined); // false, 因为 undefined 可以在局部作用域中作为变量使用
}

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • undefined 是什么?
  • undefined 是否可写?是否配置?
    • 不可写 writable: false
      • 不可配置 configurable: false
        • 不可枚举 enumerable: false
          • 不可重新定义 Object.defineProperty() 报错了
          • 关于 undefined
            • 未赋值的变量系统会自动赋值为 undefined,类型也是 undefined
              • 函数没有传值打印 undefined
                • 在函数内部没有写返回值系统默认返回 undefined
                  • undefined 不能作为变量使用
                    • undefined 不是JS的保留字和关键字,在全局下不可写,但是在局部作为变量时,它不会去全局找,局部作用域可以打印出 1 ,就算在严格模式下也仍然可以
                      • void(0) 对0进行求值,始终返回 undefined
                        • 为了避免局部作用域中取不到真正的 undefined,老的程序会用void(0)返回的undefined 来作为 undefined 去和其他变量判断是否等于 undefined
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档