Math方法
Math方法
加法
运算规则
- 加法运算符只能用于原始数据类型, 对于对象类型的值,需要进行数据转换;
- 在转换后,如果其中一个运算元出现原始数据类型是“字符串”类型值时, 则另一个运算元强制转换为字符串,然后做字符串的连接运算;
- 在其他情况时,所有运算元都会转换为原始数据类型的“数字”类型值,然后作数字的相加。
Number()转换规则
- 如果是
Boolean
值,true
和false
将分别转换为1和0; - 如果是数字值,只是简单的传入和返回;
- 如果是
null
值,返回0; - 如果是
undefined
,返回NaN;
- 如果是字符串,遵循一下规则:
- 如果字符串截去开头和结尾的空白字符后,不是纯数字字符串,那么最终结果返回结果为
NaN
; - 如果是字符串中只包含数字(包括前面带正号或负号的情况,则将其转换为十进制数值, 即
1
变成1
,123
会变成123
,而011
会变成11
(前导的零被忽略了); - 如果字符串中包含有效的浮点格式,如
1.1
,则将其转换为对应的浮点数值(同样也会忽略前导零); - 如果字符串中包含有效的十六进制,例如
0xf
, 则将其转换为相同大小的十进制整数数值; - 如果字符串是空的(不包含任何字符), 则将其转换为
0
; - 如果字符串中包含上述格式之外的字符, 则将其转换为
NaN
.
- 如果字符串截去开头和结尾的空白字符后,不是纯数字字符串,那么最终结果返回结果为
- 如果是对象, 则调用对象的
valueOf()
方法,然后依照前面的规则转换返回的值.如果转换的结果是NaN
, 则调用对象的toString()
方法,然后再次依照前面的规则转换返回的字符串值.
1 | console.log(Number(undefined)) // NaN |