js类型转换与四则运算

js中类型转换有三种情况:

①转换为布尔值

②转换为数字

③转换为字符串

类型转换表格

图片发自App

在条件判断时,除了undefined,null,false,NaN,'',0,-0其他所有值都转换为true,包括所有对象

对象转原始类型

对象在转换类型的时候,会调用内置的 [[ToPrimitive]] 函数,对于该函数来说,算法逻辑一般来说如下:

如果已经是原始类型了,那就不需要转换了

调用 x.valueOf(),如果转换为基础类型,就返回转换的值

调用 x.toString(),如果转换为基础类型,就返回转换的值

如果都没有返回原始类型,就会报错

当然你也可以重写 Symbol.toPrimitive ,该方法在转原始类型时调用优先级最高。

运算

分两部分记忆:

1、加法运算

有字转字,无字转有字,无数转有数

也就是说,运算中其中一方为字符串,那么就会把另一方也转换为字符串,如果一方不是字符串或者数字,那么会将它转换为数字或者字符串

比如1+'3'='13'//有字转字

true + true // 2  无数转有数

4 + [1,2,3] // "41,2,3"

'a' + + 'b' // -> "aNaN"有字转字+'b'转字为NaN

2、非加法运算

有数必为数

那么对于除了加法的运算符来说,只要其中一方是数字,那么另一方就会被转为数字

true转换为1,false转换为0

你可能感兴趣的:(js类型转换与四则运算)