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

学习要点:
1.typeof 操作符

2.Undefined 类型

3.Null 类型

4.Boolean 类型 


ECMAScript 中有 5 种简单数据类型:UndefinedNullBooleanNumber 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);


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值