JavaScript数据类型

JavaScript(ECMAScript5)是弱类型动态语言。我总结一下JS的数据类型相关知识。

一、六种数据类型

JS拥有number、boolean、string和null、undefined5种原始数据类型,还有object一种对象类型。

object类型又包括Function、Array和Date类型,等等。

 

二、隐式转换

要把数字转成字符串,我们可以用num+''。

要把字符串转成数字,我们可以用str-0。

原因是当数字与字符串相加时,数字会隐式转换为字符串;而当字符串减去数字时,字符串会隐式转换为数字。

 

这里我们讲下==与===(严格相等)的区别:

==只判断值相等,不管类型,而===需要值和类型都相等。在进行==判断时,等号左右会进行隐式转换。

如6=='6'返回true,接口如果返回的status不确定是数字还是字符串时,我们可以直接用==去接,这是在实际工作对接中的一个好办法。

注意,null==undefined返回true,NaN和NaN不相等。

 

另外,new String('hi')=='hi'也是返回true,即包装对象会隐式转换为原始类型进行比较。

 

三、包装对象

number、boolean和string有对应的包装类。

我们可以直接使用原始类型调用包装类型的方法,如str.length和number.toString(),这是因为原始类型被隐式转换为了其对应的包装对象,但是包装对象是临时的,会马上被销毁。

JavaScript数据类型_第1张图片

 

四、类型检测

为了程序的健壮性,我们需要进行类型检测。

这里介绍3种方法:

1.typeof

JavaScript数据类型_第2张图片

typeof适合判断基本类型和函数。(typeof null为object为历史原因)

 

2.instanceof

适合判断对象是否是从对应的原型链上继承下来的。格式为obj instanceof Object。

如[1,2] instanceof Array。

注意,在不同的window和iframe上,原型链不一样。

 

3.toString

JavaScript数据类型_第3张图片

 注意,在IE6-8中,null使用toString是返回Object的。

你可能感兴趣的:(JavaScript数据类型)