数据类型转换

一、数据类型转换


1.强制类型转换


     1.转字符串:2种方式
       var str=xx.toString();//null和undefined不能使用,如果使用则会报错
       var str=String(xx);

     2.转数字:3种方式
        var  num=parseInt(str/num);//(整数,不认识小数点)从左向右一次读取每一位字符,碰到第一个不是数字的就停下来,如果第一个字符不是数字,则为NaN
        var  num=parseFloat(str);//(认识第一位小数点)几乎和parseInt一样
        以上两种方式可以去掉单位
        Nunber(xx);万能,等效于隐式转换

     3.转布尔
        Boolean(xx);//万能,等效于隐式转换
        以下6种情况为false:  0、" "、NaN、undefined、null、false(其余全部为true)

2.隐式类型转换(一般出现在运算符和表达式中)

二、运算符和表达式


1.算术运算: + - * / %


   隐式转换:默认转为数字再运算
      特殊:1. + 运算,只要碰到字符串,则变为拼接
                 2. - * / %,纯数字组成的字符串,也可以转为数字,但是非纯数字的字符串转为NaN (NaN参与任何的算术运算结果仍为NaN)

2.比较运算:> < >= <= == !=     === !==


          结果:布尔值
    隐式转换:默认,左右两边转为数字,再比较
           特殊:1、如果左右两边参与比较的都是字符串,则是按位PK每个字符的十六进制unicode号(也称之为十进制ascii码)
              数字 < 大写 < 小写 < 汉字 - 中间可能还一些特殊符号

         2、NaN参与任何比较运算结果都为false
                               解决:判断是不是NaN
            !isNaN(x); -- true是数字 false是NaN

                    3、undefined == null; -- 结果:true,区分不开
           解决:=== 全等,要求数据类型要相同,并且数值也要相同
           
3.逻辑运算


        &&:一假则假(只要一个为false,最后则为false)
           ||:一真则真(只要一个为true,最后则为true)
           !:颠倒布尔值
     隐式转换:悄悄把每一个条件都转为一个布尔值过后,再来进行综合比较
         特殊:
             短路逻辑:只要前一个条件已经可以得出最后结论,则后续条件不需要在执行!
    &&:如果前一个条件为true,则后一个操作才会执行
                         如果前一个条件为false,则后一个操作不会执行
             固定套路:简化了  简单的(操作只能有一句话)分支  if(){}
                         公式:条件&&(操作);
                         比如:if(total>=500){total*=0.8;};
                         简化:total>=500&&(total*=0.8);

          总结:简化了简单的分支if(){},但是操作只能写一句话,如果操作有多句还是使用if结构

    ||:如果前一个条件为true,则后一个条件不在执行
                     如果前一个条件为false,则后一个条件才会执行
                     固定套路:实现两个值二选一使用 -- 备选值、做老IE兼容
         var 变量=值1||值2;

 4、位运算:


     左移:m<<n,读作m左移了n位,相当于:m*2的n次方 
     右移:m>>n,读作m右移了n位,相当于:m/2的n次方

5、赋值运算:一句话执行两个操作,先运算,再保存回去


      += -= *= /= %=
      何时使用:只要取出变量中的值,做计算,之后再保存回去时,就必须使用赋值运算
      比如:total*=0.8; // total=total*0.8;
        m+=n => m=m+n;//累加
        m*=n => m=m*n;//累乘      

                 递增和递减:
        i++ => i+=1 => i=i+1;
        i-- => i-=1 => i=i-1;

      区别:递增递减每次只会操作1,如果你希望操作的数不是1,那么请使用累加/累减/累乘/累除

    注:递增/减:1、单独使用,放前放后都一样
              2、参与了其他表达式中,变量中的值都会被+1
                      前++,返回的是递增后的*新*值
                      后++,返回的是递增前的*旧*值

 6、三目运算:简化分支:if(){}else{}、 if(){}else if(){}else{}


    语法:
      1、条件?操作1:默认操作;   ===       if(){}else{}    
        条件满足做操作1,条件不满足做默认操作

      2、条件1?操作1:条件2?操作2:默认操作;    ===    if(){}else if(){}else{}

    问题:1、只能简化简单的分支 -- 三目操作只能有一句
              2、默认操作不能省略

    总结:
        if(){}                ==                   &&短路(操作只能是一句话)
        if(){}else{}                ==        三目(操作只能是一句话)
        if(){}else if(){}else{}           ==        三目(操作只能是一句话)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值