运算符和表达式

2. ****运算符和表达式
   程序: 人的*想法*在计算机中的执行
   运算符: 程序中模拟人的想法的符号
   表达式: 由数据,变量和运算符组成的一个公式
           每个表达式都完成一项专门的运算任务
        ***每个表达式几乎都有返回值


   1. 算数运算: + - * / %
      隐式转换: 默认都转为数字,再运算
          如果无法转为数字,则转为NaN
          如果NaN参数任何算数计算,结果仍然为NaN
          特殊: +运算中,只要碰上字符串,就都转为字符串。+运算变为字符串拼接。
      %: m%n 表示m/n,不取商,而取除不尽的余数部分
      何时使用: 1. 判断能否被整除
                2. 控制一个运算的结果,不能超过指定值
                   因为模运算的结果,不可能超过除数
   2. 关系运算: 做比较
      包括: >   <   >=   <=   ==    !=
      只返回true、false
      隐式转换: 默认一切都转为数字,再比较大小
      特殊: 1. 如果参与比较的两值都是字符串
               会按位PK每个字符的unicode号
               直到比出结果为止
        2. NaN不大于,不小于,不等于任何值
               NaN和任何值做> < ==比较都返回false
               NaN和任何值做!=比较返回true
           结果: 无法用普通的关系运算,判断一个数据是否是NaN
           解决: var bool=isNaN(num)
                本意用来检测num是不是NaN
                   如果num是NaN就返回true,否则返回false
           经常反用: 用来检测num是不是数字或能否被隐式转为数字。
       比如: var bool=!isNaN(num)
                  用来检测num是不是数字
                      如果num是数字,就返回true
                      否则返回false。
        3. null和undefined: null==undefined -> true
           如何解决: 
              全等: === 类型相同且数值相同
                    其实就是不带隐式转换的==
                    
           function String(x){
    //如果x是null,就返回"null"
    if(x===null){ return "null"; }
             //否则,如果x是undefined,就返回"undefined"
    else if(x===undefined){return "undefined"}
    //否则
    else{ return x.toString(); }
           }
   3.逻辑运算: 将多个关系运算综合得出最终结论
      返回值: 逻辑运算作为条件使用时,都返回true,false
      包括: &&(而且)   ||(或)    !(不)    
      其中: &&: 只有两个条件都为true,结果才为true 
                只要一个条件为false,结果就为false
            ||: 只要一个条件为true,结果就为true
                只有两个条件都为false,结果才为false
            !: 颠倒任意bool值:!true->false !false->true
      隐式转换: 默认将每个关系运算都转为bool再综合比较
   ***短路逻辑: 只要前一个条件已经可以得出最终结论,则后续条件不再执行!
      &&: 如果前一个条件为true,时后一个条件才执行
          如果前一个条件为false,则后一个条件不执行
      固定套路: 实现简单分支: 
1个条件,1件事,满足条件才执行,不满足就不执行
        公式: 条件&&操作;
      比如: //如果total>500,才打八折
            if(total>500){total=total*0.8}
      也可写成: total>500&&(total=total*0.8);


      ||: 如果前一个条件为true,则后一个条件不执行
          如果前一个条件为false,则判断后一个条件
      固定套路: 实现两个值二选一使用——备选值


   4.位运算: 
     左移和右移:  
      m<<n: 读作m左移n位,相当于:m* 2的n次方 
      m>>n: 读作m右移n位,相当于: m/ 2的n次方 
      m>>>0: 取整


   5.扩展赋值运算: 一句话执行两个操作: 运算,再保存回去
       += -= *= /= %=
      何时使用: 只要取出变量的值做计算,之后还要再保存回去时,就要用扩展赋值运算简写。
       比如: total=total*0.8; => 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
      递增 vs 累加:
        如果每次固定增1,才用递增,否则,用累加
   ****递增/减,单独使用,放前放后都一样
       递增/减,参与其他表达式中时: 变量中的值都会被+1
           前++,返回递增后的*新*值
           后++,返回递增前的*旧*值


      鄙视题:
       var n=2;

       var r=n++ + ++n + n++;
              ?     ?     ? 

       //或 var r=++n + n++ + ++n;

       console.log(r);
  //?
      提示:所有表达式,默认从左向右执行

           优先级高的先执行 ++的优先级 高于 +


逻辑运算符的案例:

<script>
var H=180,D=218,B=true;
var H=180,D=2,B=false;
var H=155,D=2,B=false;
console.log("嘉宾1:"+(H>178&&D>1&&B==true));
console.log("嘉宾2:"+(H>178||D>1||B==true));
console.log("嘉宾3:"+(H>155||D>1||B==false));
</script>


短路逻辑的案例:

<script>
/*短路逻辑||*/
var comment=prompt("请输入评论");
console.log(comment||"主人很懒,什么也没留下");
</script>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值