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)); //NaNconsole.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)) //trueconsole.log(Boolean(b)) //falseconsole.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); //2console.log(sum) //1hello worldconsole.log(a+d) //12console.log(b+c) //truehello worldconsole.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) falseconsole.log(a>c) //10>NaN NaN是不能参与计算的,它和任何值做计算结果都是NaN//falseconsole.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) //trueconsole.log(a<b && c>d) //false</script>
4.赋值运算
<script>/* +=,-+,*=,/=,%= */var a=10;var b=20;a+=10;b-=10;console.log(a) //20console.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+1var b=a++ +11;console.log(a) //12console.log(b) //22</script>
