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”

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄