1.强制转换

  1. <script>
  2. /*number,string,boolean
  3. 1.string,boolean--->number
  4. Number() ---强制转换
  5. parseInt()
  6. parseFloat()*/
  7. var a="12";
  8. var num=Number(a);
  9. var str="12px";
  10. console.log(typeof num) //number(typeof:查看数据类型)
  11. console.log(num) //12
  12. console.log(a) //12
  13. console.log(Number(str)) //NaN (not a number)不是一个数字
  14. //NaN和任何类型做运算返回的结果都是NaN
  15. </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>

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>