1 自动转换
算术
var a="10";
var b=1;
var c=true;
console.log(a+b-c);//100
console.log(a-b+c);//10
console.log(a+c-b);//NaN
比较
,<,== 返回的是boolean
- 先将两边的值转为number,再比较
- NaN和任何值作比较,结果都为NaN ``` var a=true; var b=”10”; var c=”hello”; console.log(a>b); 1>10 //false console.log(a>c); 1>NaN //false
var a; console.log(a) // undefined console.log(Boolean(a)) //false console.log(Boolean(null)) // false
<a name="o0AsX"></a>
### 1-1 减法运算符(-)
```javascript
// 在算术计算中先将数据转换为number,再计算
var a = true;
var b = "13";
var c = b-a;
/* var c = Number(b)-Number(a) */
console.log(c) // 输出12
"1"-9+"true"-parseInt(12.34) // NaN
"9"-8+"false" // 1false
"9"-8-"false" // NaN
1-2 加法运算符(+)
+ 运算符 特殊:遇到**字符串变为 拼接符 **输出字符串
// + 运算符 特殊:遇到字符串变为 拼接符
var a = "10";
var b = 1;
var c = true;
console.log(a+b-c) // 101-1= 100
console.log(a+b+c) // 101true
console.log(a-b+c) // 10
console.log(a+c-b) // NaN
// NaN和任何数值去计算,结果都是NaN
"true1"-1 // NaN
2. 强制转换
2-1 string boolean—>number
Number(“ “) Number(“”) Number(null) => 输出 0
2-1-1 **string—>number
**
var str="10";
console.log(str);//10
var s="hello world"
console.log(s);//NaN
2-1-2 boolean—>number
true --> 1
false -->0
2-2 number string—>boolean
**undefined,"",NaN,0,null --> false**
2-2-1 **number—>boolean
0:false 非0:true**
var a=3;
var b=0;
console.log(Boolean(a));//true
console.log(Boolean(b));//false
2-2-2 string—>boolean
空字符串””为:false 其余都为:true
var str="hello world";
var s="";
console.log(Boolean(str));//true
console.log(Boolean(s));//false
""-->false
2-3 float 任意型==>number (parseInt() parseFloat() )
var str="12.121212px";
console.log(parseInt(str)); //12
console.log(parseFloat(str)); //12.121212
2-4 任意型==>string
var a = true
var str = true+""
console.log(typeof str)
console.log(typeof String(a))
console.log(typeof a.toString())