undefined

概述

undefined有多重角色,一般状况下,咱们所说的undefined都指的是全局对象的一个属性"undefined".函数

语法

undefined

描述

在JavaScript中,undefined这个词有多重含义.首字母大写的Undefined表示的是一种数据类型,小写的undefined表示的是属于这种数据类型的惟一的一个值.但这两种undefined都只能存在于文档或规范中,不能存在于JavaScript代码中.在JavaScript代码中,你看到的undefined最有多是全局对象的一个属性,该属性的初始值是就是前面所说的原始值undefined,还有种状况就是,这个undefined是个局部变量,就像其余普通变量同样,没有任何特殊性,它的值不必定是undefined,但一般状况下都是的.下面咱们所说的undefined,都指的是window.undefined这个属性.spa

在ES3中(Firefox4以前),window.undefined就是一个普通的属性,你彻底能够把它的值改变成为任意的真值,但在ES5中((Firefox4以后),window.undefined成了一个不可写,不可配置的数据属性,它的值永远是undefined.code

一个未初始化的变量的值为undefined,一个没有传入实参的形参变量的值为undefined,若是一个函数什么都不返回,则该函数默认返回undefined.对象

你可使用严格相等运算符来判断一个值是不是undefined:token

var x; if (x === undefined) { // 执行到这里 } else { // 不会执行到这里 }
注: 这里必须使用严格相等运算符===,而不能使用普通的相等运算符==,由于 x == undefined成立还多是由于 x为 null, 在JavaScript中null==  undefined是返回true的.

另外,还可使用typeof来判断:ip

var x; if (typeof x === 'undefined') { // 执行到这里 }

有时必须使用typeof的缘由是,若是一个变量根本没有被声明,只有使用typeof判断才不会报错,用相等运算符判断会抛出异常.ci

// x没有被声明过 if (typeof x === 'undefined') { // 不会报错 // these statements execute } if(x === undefined){ // 抛出ReferenceError异常 }

不过若是要检测的变量是个全局变量,能够不使用typeof.能够经过检测全局对象的同名属性来代替:文档

// x可能没有被声明过,但若是已经声明了的话,x是个全局变量 if (window.x === undefined) { // 即便window.x不存在,也不会报错 // 可能会执行到这里 } if(x === undefined){ // 若是window.x不存在,则会抛出ReferenceError异常 }
相关文章
相关标签/搜索