数据类型
ECMA中有5种简单(基本)数据类型或称基本数据类型:
undefined、null、Boolean、Number、String
和1种复杂数据类型——Object :
包括原生类型:
Array、Date、RegExp、Function、基本包装类型(Boolean、Number和String)(new的方式定义)
以及用户自定义的对象类型。而所有的对象类型(又称为引用类型,对象也即引用类型的实例)都继承自Object,所以统称为Object类型。
一、undefined
使用var声明变量但未对其进行初始化时,变量的值是undefined;
如:
var a; alert(a);//undefined
但是未定义的变量调用会发生错误。如:
alert(b);//error
注意:
①对象中调用未定义的成员,会提示undefined。
var obj={a:1,b:2}; alert(obj.c);// undefined表示没有该属性
同样对象中定义未赋值的成员,也会返回undefined。
②使用typeof对未定义的变量执行操作,同样会返回undefined。
typeof b//undefined
③函数没有返回值,调用函数返回undefined。
二、Null
值为空;逻辑角度讲,Null是空对象指针,因此使用typeof操作符检测null值会返回object。
三、Boolean
Boolean类型的true和false区分大小写,True不是布尔值,只是标识符。
四、Number
NaN和Infinity是两个特殊的Number。
1、整数
(1)十进制 var a=10;
(2)八进制 var a=07;
(3)十六进制 var a=0xA;
2、浮点数
(1)采用IEEE754标准。
(2)科学计数法:e:10的多少次方。
var floatNum=3.125e7;//31250000
(3)注意两点:
①浮点数值占用的内存空间是整数值的两倍,ECMAScript会不失时机的将浮点数值转换为整数值。
②因为浮点数的精确度不如整数,永远不要对浮点数进行比较性运算。
a=0.1;b=0.2;a+b==0.3;//false
3、NaN
NaN是非数值(Not a Num)即一个特殊的数值。
NaN不与任何值相等包括它本身。
isNaN(传参) 查看参数是否能转换成数值(对于对象先调用toValue()无效的话再调用toString()再进行转换)
4、数值转换
(1)Number
会自动去掉前导的0如“011”会转换为11。因此不能识别八进制。
(2)parseInt
①会忽略前面的空格,直至找到第一个非空格字符(因此使用parseInt转空字符串会返回NaN)->向后解析到非数字字符/结束。
②ECMAScript3中parseInt能解析八进制,如070(56);而ECMAScript5中不能解析,如070(70)。
③可加第二个参数,设置转成什么进制。
var num1=parseInt("AF",16);//175
(3)parseFloat
只解析十进制的值,如果参数可解析为整数,则返回整数。
五、String
字符串可使用单引号也可使用双引号
字符串的长度可通过length属性取得
字符串可使用+号进行拼接
字符串转换:
(1)toString(n) //n为要转换的基数(进制数)
var num=10; num.toString(8);//"12"
只有null和undefined类型的值没有toString()方法。可用下面的函数。
(2)String(num)//num为要转换的参数
不是null和undefined时调用toString()
是null返回null,是undefined返回undefined。