您的位置:首页 > Web前端 > JavaScript

JavaScript第三课——数据类型(typeof操作符、Undefined类型、Null类型、Boolean类型)

2016-01-31 23:36 981 查看
学习要点:
1.typeof
操作符

2.Undefined
类型

3.Null
类型

4.Boolean
类型 

ECMAScript
中有
5
种简单数据类型:Undefined、Null、Boolean、Number

String。

还有一种复杂数据类型——Object。

ECMAScript
不支持任何创建自定义类型的机制,所有值都成为以上
6
中数据类型之一。 

一.typeof
操作符

typeof
操作符是用来检测变量的数据类型 。对于值或变量使用
typeof
操作符会返回如下字符串。 



var box = '李炎恢';

alert(typeof box);

alert(typeof '李炎恢'); 

typeof
操作符可以操作变量,也可以操作字面量。虽然也可以这样使用:
typeof(box),但,typeof
是操作符而非内置函数。PS:函数在
ECMAScript
中是对象,不是一种数据类型。所以,使用
typeof
来区分
function

object
是非常有必要的。 

二.Undefined
类型 


Undefined
类型只有一个值,即特殊的
undefined。

在使用
var
声明变量,但没有对其初始化时,这个变量的值就是
undefined。

var box;

alert(box);

PS:我们没有必要显式的给一个变量赋值为
undefined,因为没有赋值的变量会隐式的(自动的)赋值为
undefined;


undefined
主要的目的是为了用于比较 ,ECMAScript

3
版之前并没有引入这个值,引入之后为了正式区分空对象与未经初始化的变量。

未初始化的变量与根本不存在的变量
(未声明的变量)也是不一样的。

var box;

alert(age); //age is not defined

PS:如果
typeof box,typeof age
都返回的 undefined。

从逻辑上思考,他们的值,一个是
undefined,一个报错;他们的类型,却都是
undefined。

所以,我们在定义变量的时候,尽可能的不要只声明,不赋值。 

三.Null
类型 


Null
类型是一个只有一个值的数据类型,即特殊的值
null。

它表示一个空对象引用(指针),而
typeof
操作符检测
null
会返回 object。

var box = null;

alert(typeof box);

如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为
null。

这样,当检查
null
值就知道是否已经变量是否已经分配了对象引用了。

var box = null;

if (box != null) {

alert('box
对象已存在!');

}

有个要说明的是:undefined
是派生自
null
的,因此 ECMA-262
规定对它们的相等性测试返回
true。

alert(undefined == null);

由于
undefined

null
两个值的比较是相等的,所以,未初始化的变量和赋值为
null
的变量会相等。

这时,可以采用
typeof
变量的类型进行比较。但,建议还是养成编码的规范,不要忘记初始化变量。

var box;

var car = null;

alert(typeof box == typeof car) 

四.Boolean
类型 


Boolean
类型有两个值(字面量):true

false。


true
不一定等于
1,false
不一定等于
0。

JavaScript
是区分大小写的,True

False
或者其他都不是
Boolean
类型的值。

var box = true;alert(typeof box);

虽然
Boolean
类型的字面量只有
true
和 false
两种,但
ECMAScript
中所有类型的值都有与这两个
Boolean
值等价的值。

要将一个值转换为其对应的
Boolean
值,可以使用转型函数Boolean()。

var hello = 'Hello World!';

var hello2 = Boolean(hello);

alert(typeof hello);

上面是一种显示转换 ,属于强制性转换 。

而实际应用中 ,还有一种隐式转换 。比如,在if
条件语句里面的条件判断,就存在隐式转换。

var hello = 'Hello World!';

if (hello) {

alert('如果条件为
true,就执行我这条!');} 

else {

alert('如果条件为
false,就执行我这条!');} 



//box是Undefined类型,值是undefined,类型返回的字符串是undefined
var box;
alert(typeof box);

//box是Boolean类型,值是true,类型返回的字符串是boolean
var box = true;
alert(typeof box);

//box是String类型,值是'周一',类型返回的字符串是bstring
var box = '周一';
alert(typeof box);

//box是Number类型,值是123,类型返回的字符串是number
var box = 123;
alert(typeof box);

//空的对象,标示这个对象创建了,里面没东西
//空对象,标示没有创建,就是一个null
//box是Object类型,值是[object,Object],类型返回的字符串是object
var box = {};
alert(typeof box);

//box是Null类型,值是null,类型返回的字符串是object
var box = null;
alert(typeof box);

//box是Function函数,值是function box(){},类型返回的是function
function box(){

};
alert(typeof box);

//可以直接使用字面量查看类型
alert(typeof new Object());

var box = {};
if(box != null){ //不等于null,说明不是空对象
alert("对象已经创建成功!");
}

//这个表示,你还没有创建对象,但先声明了对象引用而必须初始化的结果
//你还没来得急创建对象,先声明一个对象放在那边,默认初始化为null
var box = null;

//他们都是空的,所以相等理所当然
alert(undefined == null);

//数据类型也必须相等才可以
alert(undefined === null);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息