1、JavaScript的undefined的特点

在JavaScript中,undefined是JavaScript的原始数据类型之一,所以在未被声明的变量使用typeof操作符检测数据类型时返回undefined。同时,undefined也是一个原始值数据,当一个声明了但是未初始化的变量会默认赋值为字符串“undefined”。

undefined是全局对象上的一个属性。当我们直接输出全局window对象时,就可以找到undefined的存在,当然也可以直接输出window.undefined得到undefined。

2、什么情况下会出现undefined呢?

2.1、已声明但未被初始化的变量默认赋值undefined

let a;
console.log(a);//undefined

2.2、未被声明的变量使用typeof操作符检测数据类型时返回undefined

console.log(typeof a)//undefined

2.3、当函数没有明确指定返回值时,默认返回undefined

function fun(){
    console.log("hello");
}
console.log(fun());//函数默认会返回一个undefined

2.4、viod()返回undefined

使用viod操作任何值返回的都是undefined,以下代码均输出undefined

console.log(void(0));//undefined
console.log(void("hello"));//undefined

因此在一些比较久远的代码中,偶尔会看到这样的代码

<a href="javascript:void(0)"></a>//阻止超链接跳转

viod获取到的undefined其实就是全局对象window中的undefined。比如:

console.log(void(0)===window.undefined)//true
console.log(void(0)===undefined);//true

3、错误使用undefined

判断一个对象是否为undefined,不应该这样:

if (obj== undefined){
  ...
 }

而应该这样的:

if (typeof(obj) == "undefined") { 
   ...
}   

判断一个变量是不是undefined,用typeof函数,typeof函数主要是返回的是字符串,主要这么几种:“number”、“string”、“boolean”、“object”、“function”、“undefined”。

标签: none

添加新评论