隐式转换:
1
var a='1'+1;
console.log(typeof a);
console.log(a);
//string
//11
2
var b='2'-2;
console.log(typeof b);
console.log(b);
//number
//0
3
var c='3'==2;
console.log(typeof c);
console.log(c);
//boolean
//false
显式转换:
parseInt(str,radix),parseFloat(str,radix),Number()转变成数学
Boolean(param)转变成布尔值
subString()转变成字符串
四则运算符
加法运算符不同于其他几个运算符,它有以下几个特点:
1.运算中其中一方为字符串,那么就会把另一方也转换为字符串
2.如果一方不是字符串或者数字,那么会将它转换为数字或者字符串
console.log('a'+ +'b');
//aNaN
4 *'3'
//12
4*[]
//0
4*[1,2]
//NaN
比较运算符
如果是对象,就通过 toPrimitive 转换对象
toPrimitive(input,preferedType?)
input是输入的值,preferedType是期望转换的类型,他可以是字符串,也可以是数字。
如果转换的类型是number,会执行以下步骤:
- 如果input是原始值,直接返回这个值;
- 否则,如果input是对象,调用input.valueOf(),如果结果是原始值,返回结果;
- 否则,调用input.toString()。如果结果是原始值,返回结果;
- 否则,抛出错误。
如果转换的类型是String,2和3会交换执行,即先执行toString()方法。
你也可以省略preferedType,此时,日期会被认为是字符串,而其他的值会被当做Number。
如果是字符串,就通过 unicode 字符索引来比较