JavaScript入门教程

JavaScript简介
JavaScript语法基础
JavaScript流程控制
JavaScript函数
面向对象编程
JavaScript事件
JavaScript DOM
正则表达式
JavaScript BOM
AJAX

专题分析

浏览器兼容性
JS优化
Web前端开发规范
编辑器推荐
总结和笔记

学习助手

对象参考手册
ECMAScript分析
数据中心
QQ交流群

JavaScript Undefined类型

Undefined类型只有一个值,就是特殊的undefined。在使用 var 声明变量但未对其进行初始化时,这个变量的值就是undefined,例如:
var message;
alert(message == undefined);   //true
这个例子只声明了变量message,但未对其进行初始化,比较这个变量与undefined的值,结果证明它们是相等的。这个例子与下面的例子是等价的:
var message = undefined;
alert (message == undefined ) ;  // t rue
这个例子使用undefined 值显式初始化了变量message。但我们没有必要这么傲,因为未经初始化的变量默认值就是undefined。

注意:一般而言, 不存在需要显式地把一个变量设置为 undefined 值的情况,undefined 的主要目的是用于比校,可以正式区分空对象指针与未经初始化的变量。

不过,包含undefined值的变量与尚未定义的变量还是不一样的。看看下面这个例子:
var message;  // 变量声明之后默认值是undefined
// var age;  // 这个变量并没有声明
alert (message );  // 显示 "undefined"
alert(age);   // 产生错误
运行以上代码,第一个警告框会显示变量 message 的值,即 undefined,第二个警告框会产生一个错误,因为传递给 alert()  函数一个没有声明的变量 age。

对于没有声明的变量,只能执行一项操作,即使用 typeof 操作符检测其数据类型。

然而,令人困惑的是:对未初始化的变量执行 typeof 操作符会返回 undefined 值, 而对未声明的变量执行 typeof 操作符同样也会返回 undefined 值。来看下面的例子:
var message;  // 变量声明之后默认值是undefined
// var age;  // 这个变量并没有声明
alert( typeof message );   // 显示 "undefined"
alert( typeof age );  // 显示 'undefined'
结果表明,对未初始化和未声明的变量执行 typeof 操作符都返回了undefined 值,这个结果有其逻辑上的合理性, 因为虽然这两种变量从技术角度看有本质区别,但实际上无论对哪种变量也不可能执行真正的操作。

注意:即使未初始化的变量会自动赋予 undefined 值,但显式地初始化变量依然是明智的选择。如果能够做到这-点,那么当 typeof 操作符返回 undefined 值的时候,我们也就会知道检测的变量还没有被声明,而不是尚未初始化。