目录
011-015强制类型转换 进制 算术运算符
一.强制类型转换
1.强制类型转换为String
方法一: toString()
- 调用被转换数据类型的toString()方法
- 该方法并不会影响到原变量的数据类型,它会将转换的结果返回,最好设置一个变量来接受这个结果
- 若想要将原值的类型改变,可以使用
var a = 123;
a = a.toString();
但是要注意,null和undefined没有toString()方法
toString()方法适用于String Number Boolean
方法二: String()
- 调用String()函数,并将被转换的数据作为参数传递给函数
a = String(a)
- 该方法Number和Boolean实际上就是调用toString()方法
但是对于null和undefined,就不会调用toString()方法
它会将 变量null,undefined 直接转换成 字符串“null”和“undefined”
注意
调用String函数:a = String(a);
调用toString方法:a = a.toString();
2.强制类型转换为Number
方法一:使用Number()函数
var a = "123";
a = Number(a);
- 如果是纯数字字符串,直接转换为数字
- 如果有非数字内容,就转换为NaN
- 如果字符串是空字符串或者全部都是空格,则转换为数字0
- true转为1;false转为0;
- Null转为数字0
- undefined转为NaN
方法二:专门用来将String类型转换为Number类型 parseInt(); parseFloat();
- parseInt();把一个字符串转换为整数,将一个字符串中有效的整数内容取出来,从左往右一个一个读,只要读到不是数字时(小数点也不行),返回前面的值
- parseInt也可以用于小数取整
- parseFloat();把一个字符串转换成一个浮点数
- parseFloat();作用与parseInt作用一样,但是其遇到的第一个小数点是有效的
a = "123px";
a = parseInt(a);
//调用parseInt();将函数转换成Number,返回值为123
如果对非String使用parseInt();或者parseFloat();它会先将其转为String,然后再操作
如:a = true; a= parseInt(a);这样写后a先是转换为字符串 “true”,再把字符串转换为整数,NaN
3.将其他数据类型转化为Boolean
数字->布尔
- 除了0和NaN,其他都是true(负数和infinity都是true)
字符串->布尔
- 除了空串,其余都是true(都是空格的字符串也是true,只有双引号里什么也没有,即空串,转为布尔值后为false)
null->布尔
- false
undefined->布尔
- false
对象->布尔
- true
二.进制
- 十六进制数字以0x开头,会自动转换为十进制输出;如:
0xff -> 255;
0x10 -> 16;
- 八进制数字以0开头,所以写数字时要注意不要以0开头
- “080”用parseInt();转化,有些浏览器会当成八进制解析,有些会当成十进制解析,所以可以向parseInt();中传递第二个参数,来指定数字的进制,如
a = parseInt(a,10);表示将a转换为十进制整数
- 二进制数字以0b开头,但并不是所有浏览器都支持
三.运算符(操作符)
1.算数运算符:加+ 减- 乘* 除/ 取余%
加法
- 对非Number值运算,会先将其转换为Number
- 两个字符串相加,会将两个字符串拼成一个字符串,在写一些比较长的字符串的时候,可以使用加号进行拼串,使代码结构更好看
a = "123"+"456"; 运算后a为“123456”
- 任何值和字符串做加法运算,都会先将该值转换为字符串,再做拼串操作,如
a = 123 + "1" ,a的结果为1231
- 可以利用这一特点,将任意值转换为字符串类型,只需将该值加上一个空串,如
var a = 123;
a = a + "";
//a是类型为String,值为 “123” 的字符串
- 这是隐式的类型转换,由浏览器自动完成,实际上它也是调用String()函数
加法是 从左往右 进行运算的,如 a = 1 + 2 + “3”; 首先计算1+2,再把结果Number 3 加上 字符串 “3”,结果是字符串 “33”
取余
- 取的是相除后的余数
注意
只有 加法 在任意值加上字符串时,会将该值转换为字符串;
其他运算都是将字符串转换为Number类型再进行计算,如 a = 100 - "1"最终a的值为Number 99 可以利用这一特性,可以通过 - 0 ; * 1; / 1将字符串隐式转换为Number(不是最简单方式)
任何数和NaN运算,结果都是NaN