js基本概念注意点—数据类型

总结JS数据类型需要注意的一些知识点,基础部分涵盖的并不全面。


数据类型的类别:

JS中的数据类型总的可以分为几下几类:Number(数值型)、Boolean(布尔型)、String(字符串型)、Undefined和Null,还有一种复杂数据类型Object。JS是一种弱类型的语言,但可以使用typeof操作符判断某个变量的数据类型,返回值可能有以下几种:

"string"字符串型

"boolean"布尔型

"undefined"未定义

“number”数值型

"function"函数类型

特别注意的是:

"object" 对象类型,另外如果变量值为null,typeof 操作符返回的也是object


关于null与undefined:

undefined值是派生自null值的,因此undefined==null总是返回true


【1】Boolean

Boolean类型只有2个值,true和false。虽然只有两个值,但是其他所有类型的数据均有与Boolean值相对应的值,可以调用Boolean()函数获取这个对应值,转换的规则为:

对于String类型,任何非空字符串都转换为true,否则转换为false

对于Object类型,任何非空对象都转换为true,null转换为false

对于Number类型,任何非0数值都被转换为true,0和NaN转换为false

undefined类型转换为false

这个规则对于流程控制语句自动执行布尔转换非常重要。


[2]Number类型

数值类型:

JS中不区分整形和浮点型,所有数字均用浮点数值表示,采用IEEE754标准定义的64位浮点格式表示数字。JS中定义了多种不同格式的数值字面量类型:


整形字面量:整数有多种不同的格式,包括十进制、八进制(以0开头,在严格模式下是无效的)、十六进制(以0x开头),进行最终计算时都会转成十进制进行计算。而由于JS中都是有符号数值,因此可以保存+0和-0,在JS中+0是等于-0的。


浮点型字面量:浮点数值即必须包含一个小数点,且小数点后面至少有一位数字。浮点数值在进行算数运算时精度远远不足整数,比如0.2+0.1的计算结果不等于0.3, 因此一般不要测试某个特定的浮点数。


JS虽然都是 采用64位浮点格式来表示数字,但是在 数组索引或者位运算时则是基于32位整形的。


数值范围:

JS 中数值的最大值 可以用Number.MAX_VALUE获得,一般情况下这个值为1.7976931348623157e308,最小值可以用Number.MIN_VALUE获得,一般这个值为5e320。如果计算得出了超出数值范围的值,那么这个值就会自动转为Infinity,并且这个值就不能参与下一次运算了。


可以用isFinite()函数判断一个数值是否在正常数值范围之内。

注:isFinite(Number.MAX_VALUE+1)仍为true,可参照:点击打开链接


NaN:

Not a number,用来表示一个本来要返回数值的操作符但未能返回数值的情况。NaN有两个重要的特性:

<1>NaN不和任何值相等,包括自身

<2>有关NaN的任何操作都返回NaN


isNaN()方法用来判断一个值能否转换为数值。这个函数也可以适用于Object类型,调用时会首先调用对象的valueOf方法,看返回的值可不可以抓换为数值;如果不可以则再调用toString方法,如果依然不能转换为数值,那么就返回true。


数值转换:

有3个函数可以用来将一个值转换为数值类型,Number()方法,parseInt()方法和parseFloat()方法,第一个方法可以用于任何类型,后两个则专门用于将字符串转换为数值,这些不同的函数有不同的转换规则,这里总结一下需要特别关注的一些规则:

Number()方法转换规则:

null->0

undefined->NaN

空字符串->0

包含无效字母的字符串->NaN

对象类型的转换过程类似isNaN()方法的调用过程


事实上,调用Number()方法的过程与new Number(argument)创建一个数值的效果是类似的。


Number()方法的规则较为负责且存在不合理的地方,因此处理整数的时候更常用的是parseInt()方法,这个方法更多的看字符串是否符合数字模式,它的转换规则总结为:

parseInt()方法转换规则:

<1>忽略前导空格,直到遇到第一个非空格字符。

<2>如果第一个非空格字符不是数字字符或者正负号,则返回NaN。如果是,则继续解析,直到遇到非数字字符

<3>如果第一个字符是数字符号,那么方法也能识别出不同的整数格式,比如以“0x”开头会识别为16进制,但对于8八进制不同浏览器在识别时会有不同的行为,因此为了消除这种问题,parseInt()方法还提供了第二个参数:即转换基数。


parseFloat()方法用来转换浮点数类型,转换规则为:

<1>从第一个非空格字符解析,如果第一个非空格字符为非浮点数值有效字符(数字或者点),那么返回NaN。

<2>继续解析,直接遇到非浮点字符(第一个点会被解析,但是之后的点都会被忽略)

<3>与parseInt()不同,parseFloat()会忽略前导的0,因此16进制格式的数值会被转换为NaN。


注:要充分了解JS中Number类型的表示方式,需要对IEEE754标准的64位浮点格式有清楚的了解和认识。


[3]Object类型

JS中的对象其实就一组数据和功能的集合,在JS中,Object类型是其他对象实例的基础,它具有的属性和方法其他对象实例也都具有,这些属性和方法包括:

<1>construtor属性:保存用于创建该对象的函数。

<2>hasOwnProperty(propertyName):用于检查给定的属性在当前对象中是否存在,属性名以字符串的形式指定。

<3>isPrototypeof(object):用于检查对象是否是传入的对象的原型。

<4>propertyIsEnumerable(propertyName):属性名是否能在for-in循环中枚举,属性名以字符串的形式指定。

<5>toLocalString()与toString()

<6>valueOf()返回对象的字符串、数值或者布尔值表示。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值