js数据类型
es5中定义了五种简单数据类型和一种复杂数据类型:Undefined、Null、Boolean、Number、String、Object。
1、 typeof 操作符 格式:typeof xxx
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。typeof 的值有:“undefined”,“boolean”,“string”,“number”,“object”,“function”。特别的,typeof null 的值是“object”, typeof 未初始化的变量值是“undefined”
2、Boolean类型
值有 true 和 false。但其他类型的值也能转化成Boolean,调用 Boolean() 函数,将参数转成Boolean类型。
数据类型 | 转换为true的值 | 转换为false的值 |
Boolean | true | false |
String | 任何非空字符串 | ""(空字符串) |
Number | 任何非零数字值(包括无穷大) | 0 和 NaN |
Object | 任何对象 | null |
Undefined | n/a | undefined |
3、Number类型
3.1 定义赋值
var n1 = 55 ; // 十进制整数
var n2 = 070 ; // 八进制,零开头,但数字不能超过8,严格模式下不能使用以零开头的数字赋值,但可以0o(零o)开头
var n3 = 08; // 无效八进制,为十进制的8
var n4 = 0o70; // 八进制56 ,0o开头
var n5 = 0xA; // 十六进制 ,10,以0x开头
有 正零(+0)和负零(-0),正零和负零相等;所有的数值运算最终都会转为十进制运算
3.2 浮点数
var float = 1.1;
var f2 = 0.1;
var f3 = .9; // 不推荐
var f4 = 1.0 ; // 转成整数1 ,节省空间
var f5 = 1.; // 转成整数1 , 节省空间
var f6 = 3.12e-7; // 科学计数法
浮点数计算有误差:0.1 + 0.2 = 0.30000000000000004,所以不能简单的判断浮点数运算相等,要在一定的误差内判断。
3.3 数值范围
最大值:Number.MAX_VALUE
最小值:Number.MIN_VALUE
如果超出范围会被转成无穷大(Infinity或-Infinity),且不能参加运算。可以使用 isFinite() 函数判断参数是不是有穷的
3.4 NaN ,一个特殊的数值
用来表示本该返回数值的操作数未返回数值的情况。
任何与 NaN 的操作都会返回 NaN;
NaN与任何值都不相等,包括NaN本身;
可以使用 isNaN() 函数判断参数是不是 NaN,该函数先尝试将参数转成数值,如果不能返回true。
3.5 数值转换
Number() 函数,返回10进制数, 转换规则:
1)参数是 Boolean 值,true 和 false 分别转换成 1 和 0;
2)参数是 数字,简单的传入传出;
3)参数是 null ,返回 0;
4)参数是 undefined ,返回NaN;
5)参数是 字符串 ,
如果字符串中只包含数字(包括0x/0o开头的数,和浮点数,0x/0o/十六进制忽略大小写)开头,忽略前导零,则将转化成Number,如果是正负号后接0x/0o数字字符也转为NaN;
如果包含非数字字符,即使数字字符在前面,非数字字符在后面,转成 NaN;
如字符串是空的,转成 0;
6)参数是 对象,则调用其 valueof() 方法,然后依照之前的规则继续转换,如果转换后的值的NaN,则会继续调用 对象的 toString() 方法,在按照之前的方法转换。
注意:一元加/减,和减法(不包含加法)操作符的操作规则与Number()方法形同,即先转化成数值在运算。
parseInt()函数,将参数转换成整数,返回10进制数, 转换规则:
1)Boolean,null,undefined,空字符串,返回NaN
2)忽略字符串前面的空格,直至找到第一个非空格字符;
3)如果第一个非空字符不是数字字符或者正负号,返回NaN
4)第一个非空字符是数字字符(包括正负号和0x/0X,但不包括0o/0O,即不解析八进制),继续解析下一个字符直至结束或者遇到非数字字符(小数点也算非数字字符);
5)parseInt() 函数可以给第二个参数,指定第一个参数的进制基数(2,8,10,16),但转换仍旧是使用之前的规则,第一个参数可以不带0x/0X
parseFloat() ,将参数转换成浮点数,返回10进制数,转换规则:
1)Boolean,null,undefined,空字符串,返回NaN
2)忽略字符串前面的空格,直至找到第一个非空格字符;
3)如果第一个非空字符不是数字字符或者正负号,返回NaN
4)第一个非空字符是浮点数数字字符(包括正负号,但不包括0o/0O和0x/0X,即不解析八进制、十六进制),继续解析下一个字符直至结束或者遇到非数字字符(第一个小数点算浮点数数字字符);
4、String类型
ECMAScript中的字符串是不可变的,字符串一旦创建后 ,要修改某个变量保存的字符串,首先要销毁原来的字符串,然后在用一个包含新值的字符串填充该变量。
toString():除了null 和 undefined 外,数值,布尔,对象,字符串都有一个 toString()方法,将其转成字符串。
Number.toString(base):数值的toString()可以指定将数值按哪一种进制基数转化,不给进制基数参数时,默认是10进制。10.toString(16);// "a"
String():将任何类型的值转换为字符串,转换规则:
1)如果参数有toString() 方法,则调用该方法;
2)如果参数是null ,返回“null”;如果是 undefined ,返回 “undefined”
