JavaScript-运算符和表达式

时间:2022-08-22 18:03:16

***** 程序基础知识理解*****

程序:“人的想法”在计算机中的执行

运算符:程序模拟人类想法的特殊符号

表达式:由变量,运算符和数据组成的公式

所有表达式都返回一个结果,都可当做一个值使用

运算符和表达式正课:

1. 算数运算:

        %模运算(取余数)m%n,m/n,取除不尽的余数部分

        何时使用:1. 判断能否被整除

                       2. 限制运算结果的上限

   ++-- 运算符: 

  n++; 这种写法相当于 n=n+1;

  如果单独使用,++写前写后都一样

  如果参与其他表达式中:

    都是将变量中的值+1

    写在前++: 返回**值  ->如:var n=1;console.log(++n);(此时返回的是新值,是+1后的值->2)

    写在后++: 返回**值  ->如:var n=1;consoloe.log(n++);(此时返回时旧值,是未+1的值->1)

 

2. 关系运算:做比较!返回bool类型结论

 

       普通:> < >= <= != ==

 

       做关系运算时隐式转换:默认都转为数字再比较

 

       如果参与比较的都是字符串,则按位PK unicode

 

       特殊:1. 判断是不是NaNisNaN(num)

 

  如果numNaN,就返回true,否则返回false

 

              为什么:NaN不等,不大于,不小于任何值,甚至自己

 

  NaN和任何数据做!=比较,永远返回true

 

              习惯用法:判断num是不是数字

 

                 !isNaN(num): 返回true,说明num是数字

 

                              返回false,说明num不是数字

 

         2. null  undefined

 

          undefined: 所有变量的默认值,自动赋值

 

          null: 主动清空一个变量(主动释放对象)

 

          问题:用==无法判断nullundefined

 

          解决:全等===:先数据类型必须相同,再数值相等

 

                  ===不带隐式转换

 

          何时使用:狭义:区分nullundefined

 

                    广义:只要不希望隐式转换时,就用全等

 

 

 

     3. 逻辑运算:将多个关系运算综合得出最终结论

 

                  做判断-->返回bool类型true/false

 

          隐式转换:默认将所有条件转化为bool,再联合判断结果

 

          &&:"",所有条件都为true,结果才为true,

 

   只要一个条件为false,结果就为false

 

          ||:"",只要一个条件为true,结果就为true

 

           只有所有条件都为false,结果才为false

 

          ! :"",颠倒任意关系运算和逻辑运算的结果

 

     ***短路逻辑:只要前一个条件已经可以得出最终结论,后续条件不再执行。

 

        利用短路逻辑:2种:

 

        1.一个条件,一件事,满足条件才执行,不满足就什么也不做

 

        total>=500&&(total=total*0.8)

 

        2.设置默认值:||

 

        值1||2 -->返回两值中有效的一个

 

     4. 位运算:>> <<

 

        左移: m<<n m的二进制数左移n位,相当于*2n次方

 

        右移: m>>n m的二进制数右移n位,相当于/2n次方

 

     5. 扩展赋值运算:先修改变量中的值,再存会变量

 

          +=  -=   *=   /=    %=

 

         m+=n --> m=m+n

 

     6. ***三目/三元/条件运算:

 

     什么是根据不同的条件返回不同的值/执行不同的操作

 

           何时使用:

 

           如何使用:

 

           条件1?操作1/1:

 

           条件2?操作2/2:

 

              ...  ...:

 

              默认操作/默认值;-->不能省!

 

 三目 vs if...else

 

  第一种情况:

 

             如果操作简单,首选三目

 

             如果操作复杂,用if...else

 

  第二种情况:

 

             如果操作只是获得不同的值,也可用三目代替if...else

 

  第三种情况:

 

             如果希望省略默认操作时,只能用if...else