1.强制转换
<script>
/*number,string,boolean
1.string,boolean--->number
Number() ---强制转换
parseInt()
parseFloat()*/
var a="12";
var num=Number(a);
var str="12px";
console.log(typeof num) //number(typeof:查看数据类型)
console.log(num) //12
console.log(a) //12
console.log(Number(str)) //NaN (not a number)不是一个数字
//NaN和任何类型做运算返回的结果都是NaN
</script>
1.1.string-number转换
<script>
/*string-number
parseInt() 1.开头的字符必须以数字开头 2.遇到非数字的字符就停止解析
parseFloat() 1.遇到非数字的字符继续解析
Number-->
局限性:只能识别纯数字的字符串
*/
var str="12.323px";
console.log(Number(str)) //NaN
console.log(parseInt(str)) //12
console.log(parseFloat(str)) //12.323
</script>
1.2boolean-number转换
<script>
/*boolean-number
Number() 1.只能识别纯数字的字符串 2.只能识别纯boolean类型
var t=true;
var f=false;
var str="true"
console.log(Number(t)) //1
console.log(Number(f)) //0
console.log(Number(str)) //NaN
</script>
<script>
/*boolean-number
Number() 1.只能识别纯数字的字符串 2.只能识别纯boolean类型
var t=true;
var f=false;
var str="true"
console.log(Number(t)) //1
console.log(Number(f)) //0
console.log(Number(str)) //NaN
</script>
1.3any-string
<script>
/* String() toString()*/
var a=1o;
var t=true;
console.log(typeof String(a)); //string
console.log(typeof t.toString()) //string
</script>
1.4any-boolean
<script>
/*Boolean()
Tip:"" NaN undefined null 0 -->以上五种情况输出:false 其余都是true
*/
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
var str="";
console.log(Boolean(null)) //false
</script>
2.自动转换
2.1加运算
<script>
/*不需要程序员干预,js自动完成的类型转换
场景:主要在算术计算中+,-,*,/,%
*/
/*1.在加运算中的自动转换
算术计算中先将两边的变量转换为Number再计算 Number()
特殊:在加运算中,碰到字符串,+就会起到拼接符的作用
*/
var a=1;
var b=true;
var c="hello world";
var str=a+b;
var sum=a+c;
var d="2"
/*var str=a+Number(b);*/
console.log(str); //2
/*var sum=String(a+c)*/
console.log(sum) //1hello world
console.log(a+d); //12
</script>
2.2减运算
<script>
/* 在算术运算中,先将变量转换为Number再计算
特殊:在+运算中,如果有一边为字符串,+起到拼接符的作用,结果为字符串
*/
var a=true;
var b="3";
var c=4;
/*Number(a)-Number(b)*/
console.log(a-b); //-2
console.log(c-b); //1
console.log(c-a); //3
</script>
2.3比较运算中的自动转换
<script>
/*>,<,>=,<= 比较运算返回的结果是boolean
先将两边的值转换为Number在比较
*/
var a=10;
var b="20";
var c="true";
console.log(a>b); //false
/*Number(a)>Number(b)*/
console.log(a>c); //false
/*Number(a)>Number(c) 10>NaN NaN不能参与计算的,它和任何值做计算,返回都是NaN*/
</script>
2.4算术运算符
<script>
/* +,-,*,/,%,++,-- */
var a=10;
var c=3;
var b=2;
b++;
c=b++ +4;
console.log(a%c) //1
console.log(a%b) //0
console.log(c) //7
</script>
2.5++/—运算
<script>
/* ++,--
在算术运算中++在前 先自增,后运算
++在后 先运算,后自增
*/
var a=10;
a++; //11
/* a=a+1 */
var b=a++ +11; //22
/* var b=++a +11; //23 */
console.log(b)
/* var a=10;
a--;
var b=a-- -2;
console.log(b) */
</script>
2.6.比较运算
<script>
/*<,>,<=,>=,==,!=
返回boolean
*/
var a=10;
var b=20;
console.log(a==b) //false
console.log(a!=b) //true
console.log(a!="true") //NaN和任何数据做!=比较时,始终返回true
//isNaN 判断一个值是不是NaN
console.log(isNaN(NaN))
</script>
2.7.逻辑运算
<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
console.log(a<b || c>d) //true
console.log(!a) //false
</script>
2.8.赋值运算
<script>
/* +=,-=,*=,/=,%= */
var a=10;
a+=10;
//a=a+10; //a=20
console.log(a)
</script>
2.9三目运算
<script>
var a=10;
var b=20;
var c=(a>b)?"a大于b":"a小于b";//如果a>b为true 则返回结果a大于b 否则返回a小于b
console.log(c) //a小于b
</script>
三目运算例子
引入vue
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
<body>
<div id="app">
<img @click="handleClick" :src="isPlay?'images/credit.jpg':'images/jiaoban.jpg'" alt="">
<p>{{isPlay}}</p>
</div>
<script>
new Vue({
el:"#app",
data(){
return{
isPlay:false
}
},
methods:{
handleClick(){
this.isPlay=!this.isPlay
}
}
})
</script>
</body>