文章目录
1. NAN
isNaN() 方法在接收到一个值之后,会尝试将这个值转换成数值。
2. 数值转换
Number()
Number()
可以传入任何数据类型
- 输入null, 返回 0
- 输入Boolean值,true 和 false 将分别转换为 1 和 0 ;
- 输入undefined, 返回 NaN
- 输入字符串,返回值如下
- a. 若字符串只包含数字(整数、十六进制整数或者有效的浮点数), 忽略前导零,返回对应的数值
- b. 输入空,返回0
- c. 包含除以上之外的字符,返回NaN
parseInt()
parseInt()
只转换字符串
- 先找到第一个非空格的字符。若是数字字符或者负号,则接着解析第二个字符,直到解析完所有的字符或者遇到了非数字字符,则返回解析出的数字。否则返回NaN。由于小数点并不是有效的数字字符,所以parseInt() 会忽略浮点数的小数部分。
- 输入对象,先调用valueOf()
- parseFloat() 只解析十进制值, 可以解析字符串中的第一个小数点。
3. 字符串转换
toString()
- 数值、布尔值、对象和字符串值都有这个toString()方法, 但是null和undefined没有这个方法,强行使用会报错。
- 在调用数值的toString()方法时,可以传参(输出数字的基数)
String()
可以将任何类型的值转换成字符串,包括null和undefined
操作符
一元操作符 ++、–
a. 字符串为有效数字字符:先将其转换成数字,再进行运算
b. 字符串含有非数字字符:变量值变为NaN
c. 布尔值:先转换成0或1,在进行运算
d. 对象:先调用对象的valueOf()
乘性操作符
- 乘法: 若有操作数不是数值,则底层会先调用Number()将其转为数值,再进行运算
- 除法:
i. 零被零除,结果为NaN
ii. 非零的有限数被零除,结果为Infinity
iii. 有操作数不是数值,先用Number() 转化 - 求模
i. 被除数是无穷大值或者除数是0,结果均为NaN
加性操作符
- 加法:
i. 有操作数为NaN,结果为NaN
ii. Infinity + Infinity = Infinity
iii. Infinity + -Infinity = NaN
iv. +0 + -0 = +0
v. 若有操作符为字符串,则将另一个操作符转换为字符串,将两个字符串拼接起来 - 减法
i. +0 - 0 = -0
ii. +0 - +0 = +0
iii. -0 - -0 = +0
关系操作符
a. 两个操作符均为字符串,比较两个字符串对应的字符编码值
b. 一个操作数是数值,则将另一个操作数转成数值,进行比较
相等操作符
- == 和 != 会强制转型
i. 若操作数为字符串或者布尔值,则先转为数值
ii. null == undefined
iii. 若有一个或两个操作符为NaN,== 会返回false, !=返回true
iv. 若两个操作符都是对象,若他们都指向同一个对象,== 返回true, !=返回false - === 和!== 只比较未转换之前的操作数
条件操作符
a ? b : c
赋值操作符 简化赋值操作,没有性能提升
a. *= 、/= 、%= 、 += 、 -= 等
~