undefined
2015-12-14 20:35
190 查看
概述
undefined有多重角色,通常情况下,我们所说的
undefined都指的是全局对象的一个属性
"undefined".
语法
undefined
描述
在JavaScript中,undefined这个词有多重含义.首字母大写的Undefined表示的是一种数据类型,小写的undefined表示的是属于这种数据类型的唯一的一个值.但这两种undefined都只能存在于文档或规范中,不能存在于JavaScript代码中.在JavaScript代码中,你看到的undefined最有可能是全局对象的一个属性,该属性的初始值是就是前面所说的原始值
undefined,还有种情况就是,这个
undefined是个局部变量,就像其他普通变量一样,没有任何特殊性,它的值不一定是
undefined,但通常情况下都是的.下面我们所说的
undefined,
都指的是window.undefined这个属性.
在ES3中(Firefox4之前),
window.undefined就是一个普通的属性,你完全可以把它的值改变成为任意的真值,但在ES5中((Firefox4之后),
window.undefined成了一个不可写,不可配置的数据属性,它的值永远是
undefined.
一个未初始化的变量的值为
undefined,一个没有传入实参的形参变量的值为
undefined,如果一个函数什么都不返回,则该函数默认返回
undefined.
你可以使用严格相等运算符来判断一个值是否是
undefined:
var x]if (x === undefined) { // 执行到这里 } else { // 不会执行到这里 }
注: 这里必须使用严格相等运算符===,而不能使用普通的相等运算符==,因为
x == undefined成立还可能是因为
x为
null,
在JavaScript中null==
undefined是返回true的.
另外,还可以使用
typeof来判断:
var x]if (typeof x === 'undefined') { // 执行到这里 }
有时必须使用
typeof的原因是,如果一个变量根本没有被声明,只有使用
typeof判断才不会报错,用相等运算符判断会抛出异常.
// 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异常 }
相关文章推荐
- QTP中使用强制退出程序语句小记
- PHP读取TXT中文乱码的解决方式
- 【Beta】Daily Scrum Meeting第七次
- PCL—低层次视觉—关键点检测(rangeImage)
- firefox浏览器批处理插件imacros
- linux 搭建git 服务器
- 文本相似度算法
- Zero Copy 简介
- Spring中Bean的4种依赖检查模式
- 网格的学习—1
- Swift的74标准功能
- Python中strip()函数
- uva 10655 - Contemplation! Algebra 【矩阵快速幂】【最坑的输入】
- myeclipse快捷键
- hdoj 5597 GTW likes function 【打表找规律】
- ARM926 interrupts in QEMU
- 一个数字与时间切换的函数
- spring中的5中自动装配方案
- 109 Convert Sorted List to Binary Search Tree
- ajax实现提交数据并且不跳转