数据类型
1.javascript设定了5种基本类型,分别为:string、boolean、number、null、undefined.外加一种复杂数据类型:object
2.用typeof检测某一个值属于那种基本类型,在此之中,有一个特殊的结果为:function.
typeof(string类型); string(注:仅限于string字面量,而非 var string=new String())
typeof(null); object (null为设置一个空对象而存在,于是其typeof为object)
typeof(undefined);undefined(所有未定义或者定义了但是没有初始化的数据都会被设置一个特殊的值—undefined)
typeof(boolean);boolean
typeof(number);number
typeof(function);function(function作为一个特殊的object存在,于是有必要将其区别出来)
各种数据类型分析
-
undefined
上面已经提到
-
null
null为一个空对象指针,如果需要建立一个变量用来存储一个对象,那么在初 始化时用var obj = null,这样在判断这个值是只用if(obj != null)
-
boolean
3.1该类型会有两个值:true、false.
3.2各种类型值转化为boolean类型时:string(任何非空字符都会转化为true,空字符转化为false) number(任何非0数字都会转化为true,包括无穷大。0会转化为false) null(始终为false) undefined(始终为false) object(除了null其他转化为true)
-
number
4.1 NaN----- isNaN
其中有一个特殊的值NaN(表示为其值不是数值),可以用isNaN判断一个值是否为数值。(其判断规则为 如果其值能够用Number()转化为正常数值而不是返回NaN,则返回true)
4.2 数值范围
每个浏览器能够解析的数值有一个界限,可以用Number.MAX_VALUE、Number.MIN_VALUE查看。如果超出这个界限则被转化为-Infinity、Infinity。可以使用Number.NEVIGATE_INFINITY == -Infinity 、Number.POSITIVE_INFINITY == Infinity
可以使用isFinity()来判断一个数值是否位于正无穷和负无穷之间,如果是则返回true,否则返回false.
4.3 parseInt(para1,para2)
可接受2个参数,para1为需要转化的数值,para2为按多少进制转化。
空字符串会被转化为NaN(但是空字符串转化为number类型时是转化为0)
parseInt转化字符串时,会从第一个非空格字符开始查找,如果第一个字符不是数字或者负号,则会返回NaN。如果第一个是数字字符,会接着解析第二个,直到遇到一个非数字字符包括小数点。(parseInt可以识别各种整数格式,即如果遇到‘0x’后面跟数字字符则会解析为16进制数。如果是‘0‘开头后面更随数字字符会被转化为8进制数)
4.4 parseFloat(para)
parseFloat()会忽略数字字符之前的0于是其不能识别8进制16进制。parseFloat()只会解析到第一个小数点,如果有2个小数点则会在第二个小数点处截断。如果para是一个整数则会返回整数
4.5各种类型值转化为Number类型时:
undefined转化为NaN
null转化为0
Boolean的true转化为1,false转化为0
Object转化为NaN
Sting:空字符串会转化为0,只包含数字的字符串转化为对应数字,但是会忽略8进制数.'0xf'会被转化了其对应的10进制数。结果只可能是10进制。
Number('222bbb')==NaN但是parseInt('222bbb')==222
-
string
5.1各种类型的值转化为string类型
string会先调用该值对应的toString方法得到结果,但是null、undefined没有toSting方法。对于Number类型toString()可接受一个参数,表示按照什么基数转化
null转化为'null'
undefined转化为'undefined'
number转化为10进制对应的值
boolean会转化为'true'、'false'