1.强制转换
A.Number()
B.String() toString()
C.Boolean()
Number() 局限性:只能识别纯数字的字符串 和 纯布尔类型
可以识别小数点
<script>
var str="12px"
console.log(Number(str)) //NaN(not a Number) 不是一个数字
</script>
parseInt 1.开头的字符必须以数字开头 2.遇到非数字的字符就停止解析
parseFloat
<script>
var str="12.3333px";
console.log(Number(str)); //NaN
console.log(parseFloat(str)) //12.3333
</script>
x.toString(); x不是undefined或null时才可用
String(x)
Boolean()
Tip:5种情况输出为false
"" NaN undefined null 0
<script>
var a=10;
var b=0;
var c="hello world"
console.log(Boolean(a)) //true
console.log(Boolean(b)) //false
console.log(Boolean(c)) //true
</script>
2.自动转换
定义:不需要程序员干预,js自动完成的类型转换
1.算术计算中,数据都默认转为数字再计算,不能转换为数字的则为NaN
<script>
var a=1;
var b=true;
var d="2"
var c="hello world";
var str=a+b; //var str=a+Number(b)
var sum=a+c; //var sum=String(a)+c;
console.log(str); //2
console.log(sum) //1hello world
console.log(a+d) //12
console.log(b+c) //truehello world
console.log(a-c) //NaN
</script>
2.特殊 +运算中,只要碰到字符串,+就变为字符串拼接
<script>
var a=20;
var b=true;
console.log(a-(b+"2")) //输出NaN
</script>
3.运算符和表达式
1.算术运算
+,-,*,/,%,++,--
2.比较运算:将两个值作比较—>返回值:true、false
>,<,>=,<=,==,!=
<script>
/*
先将两边的值转换为Number再比较
*/
var a=10;
var b="20"
var c="true"
console.log(a>b); //Number(a)>Number(b) false
console.log(a>c) //10>NaN NaN是不能参与计算的,它和任何值做计算结果都是NaN
//false
console.log(a!="true") //NaN和任何数据做!=比较时,始终返回true
</script>
特殊情况
NaN: NaN不等于,不大于,不小于任何值(包括自己)
NaN和任何数据做!=比较时,始终返回true
isNaN(n):本意是判断一个值是否是NaN
3.逻辑运算:将多个关系运算综合起来,得出最终结论,返回值:true、false
<script>
/* &&与 ||或 !非
&& 两边都为true 结果才为true
|| 只要有一边为true结果就为true
! 取反
*/
var a=20;
var b=30;
var c=40;
var d=50;
console.log(a<b && c<d) //true
console.log(a<b && c>d) //false
</script>
4.赋值运算
<script>
/* +=,-+,*=,/=,%= */
var a=10;
var b=20;
a+=10;
b-=10;
console.log(a) //20
console.log(b) //10
</script>
5.三目运算
<script>
var a=10;
var b=20;
var c=(a>b)?"a大于b":"a小于b"
console.log(c) //a小于b
</script>
4.前++,后++
<script>
/* ++,--
在算术运算中++在前,先自增,后运算
++在后,先运算,后自增*/
var a=10;
a++; //a=a+1
var b=a++ +11;
console.log(a) //12
console.log(b) //22
</script>