美文网首页
javascript的数据类型

javascript的数据类型

作者: 蚊子锅 | 来源:发表于2017-06-14 19:52 被阅读23次

想复习下之前学的js数据类型的知识,主要是总结一下针对string和数组的各种操作。

一,javascript有5种数据类型。

1.Undefined(未定义)

2.Null

3.Boolean(布尔值,true or false)

4.Number(数值,例如1)

5.String(字符串)

6.Object(对象)

二,typeof操作符

用来检测数据类型的操作符(不是函数),会根据值的数据类型的不同返回不同的值。

undefined-如果这个值未定义

boolean-如果这个值是布尔值

string-如果这个值是字符串

number-如果这个值是数值

object-如果这个值是对象或者null,因为null指向的是一个空的对象指针,所以typeof会返回object而不是null。

function-如果这个值是函数

三,各种数据类型

1.Undefined

这个类型只有一个值,就是undefined,在声明了变量但还未赋值的时候,这个就是undefined。例如:

var message;

typeof(message) //undefined

2.Null类型

这个类型也是只有一个值,null,从逻辑上说,这个指向一个空的对象。所以用

var call = null;

typeof(call)//object

所以,如果要用使用对象,可以先声明它等于null。

3.Boolean类型(这个着重说一下JS布尔值的自动转换)

有true和false两种,要区分大小写,True和False只是标识符。

有一个转换函数Boolean(),可以将其它数据类型转换为布尔值。

数据类型            转换为true                                         转换为false

字符串                任何非空字符串                                “”(空字符串)

Number               任何非零字符串                               0和NaN

Object                  任何对象                                         null

Udefined               不能转换为true                               undefined

对于if(message)中的message会自动执行布尔值转换。

还有一些操作符比如,===,==,>=等也会先进行布尔值转换,运算出来的结果可能有点奇怪。下面有个我不知道在哪找到存手机的真值表。可以时常拿出来看看。

3.Number类型

浮点运算采用双精度数值(IEEE754格式),会出现0.1+0.2 != 0.3的情况!

其实是等于0.30000000000000004,为什么会这样呢?这里稍微提下,是因为都会先将小数转换为双精度对应格式的二进制然后做加法,最后再转换回来。具体计算方式这里不赘述了,有兴趣的可以看看这个双精度浮点数运算

进制表示方法

十进制:55,

八进制:070(8进制的56)8进制前面加0,不能超过8,08会自动解析为8。但在严格模式下无法识别,ES6新增了0o的表示方法。

十六进制:0xA,16进制的10。0-9,A-F。

内存限制,最小值,5e-324,最大值1.7976931348623157e+308,如果超出这个范围,正数则是正无穷Infinity(Number.MAX_VALUE),负数则是负无穷-Infinity,正负无穷无法参加下一次运算。有一个函数可以确认是否有穷,是isFinite(),有穷返回true,无穷返回false。

NaN(Not a Number)

var result = 4/0 //NaN

需要注意的是NaN与任何值都不相等,包括它自己。很奇葩吧,如何判断是不是NaN呢?用isNaN()来判断就好了呀!这个函数会尝试把传进去的参数转换成为数值,不能转换就会返回true,比如字符串或者布尔值。

如何将其它数据类型转换为数值呢?JS提供了三个函数:Number(),parseInt(),parseFloat()。

Number(true)//1

 Number(false)//0

Number(011)//9(8进制)

Number('02323') //2323,Number('') //0

Number('hello')  //NaN,Number('')

Number(null) //0

Number(undefined) //NaN

一般处理正数的时候用parseInt()

parseInt('')  //NaN

parseInt('123fdasfasf') //123

parseInt('agasdf') //NaN

parseInt(22.5) //22,向下取整数,只保留整数   Math.ceil(22.5)//向上取整,Math.round(22.4)//22 四舍五入

parseInt(070) //56 八进制

parseInt('070') //70并不会识别8进制哦

还可以添加第二个参数作为进制基数哦~就是把传入的第一个参数用后面一个参数规定的进制解析,比如:

parseInt(‘10’,2)//2

parseInt('0xf',16) //15可以识别哦~

parseInt('0o10',8) //0,但是8进制写法的字符串还是无法识别,就是不喜欢8进制,任性。

parseFloat()也是从第一个字符开始解析,一直解析到字符串的末尾或者遇到第一个无法识别的。第一个点有效,第二个就无效了哦,比如:

parseFloat('22.4.5.7')//22.4

parseFloat("2323dfdf") //2323 也是可以返回整数的哦

parseFloat('0xA') //返回0,16进制格式的字符串始终会被转换为0

4.String类型

需要注意的第一个就是转义序列

\n 代表换行;\t 制表;\b 空格;\r回车;\f 进纸(喵喵喵???不是很懂,是给打印机识别用的??);\\就是斜杠;\xnn 以16进制表示的一个字符,n为0-f;\unnn 以16进制代码nnn表示一个Unicode字符,要比nn表示的多。

console.log('\x44') //D

字符都有lenght属性,可以调用,查看字符长度,上面说到的\* 也是会算长度的哦~

中文字符也只算一个长度。

var a = '的等等';

console.log(a.length);//3

字符串和数值都是基础类型,创建了就不可变,要更改只能销毁重新分配储存空间。

转为字符串

使用toString()的方法转为字符串。

待更。。。

相关文章

网友评论

      本文标题:javascript的数据类型

      本文链接:https://www.haomeiwen.com/subject/rpxcxxtx.html