美文网首页
你真的了解undefined吗?

你真的了解undefined吗?

作者: 踏莎行 | 来源:发表于2021-05-15 15:09 被阅读0次

undefined既是一个基本数据类型也是一个原始值数据

  • 系统会给一个未赋值的变量赋值为undefined,返回的类型也是undefined
var a;
console.log(a); // 值undefined
console.log(typeof a);  // 类型undefined
  • 调用一个有参数的函数但是不传参,这个参数也是undefined
function test(a){
    console.log(a); // 值undefined
    console.log(typeof a); //  类型undefined
    return a // // 值undefined
}
console.log(test());
  • 函数内部没有显式return东西时,系统默认返回undefined
function test(){
    var a = 9
}
console.log(test()); // undefined

undefined还是全局window上的一个属性

window.undefined.png
  • 这个属性是只读的,不可配置,不可枚举
console.log(window.undefined); // undefined
            
window.undefined = '123'
console.log(window.undefined);
            
for (let k in window) {
  if(k === undefined){
    console.log("访问到了");
   }
 }


undefined.png
  • 不可重新定义
Object.defineProperty(window, "undefined", {
    enumerable: true,
    writable: true,
    configurable: true
})
//直接报错
 Uncaught TypeError: Cannot redefine property: undefined
    at Function.defineProperty (<anonymous>)
    at test.html:9

undefined可以做变量名吗??

  • 全局作用域下
var undefined = 1
console.log(undefined); // undefined
console.log(window.undefined); // undefined
  • 局部作用域下
function test(){
    var undefined = 1
    console.log(undefined); // 1
}
test()

undefined在局部作用域可以作为变量,undefined不是关键字也不是保留字,上面也说了在全局下,undefined是只读的,所以在局部作用域中就可以使用,严格模式下仍然可以。但是开发中还是避免使用它做变量名

判断类型

如果要判断某个变量是否是undefined,必须使用“===”而不能使用“==”

var a;
if(a === undefined){
  console.log("执行了"); // 可以执行
  }

var b;
if(a == undefined){
  console.log("执行了"); // 可以执行
  }

为的就是与null进行区分,当a = null时,a == undefined返回的结果就是true

var a = null;
if(a == undefined){
  console.log("执行了");
}

相关文章

网友评论

      本文标题:你真的了解undefined吗?

      本文链接:https://www.haomeiwen.com/subject/ofbhjltx.html