JavaScript运算符你知道有哪些吗?

219 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情

JavaScript运算符是我们在实际开发中非常常用的一部分语法内容,高效利用JavaScript运算符及其技巧,可以帮助我们写出更优质的JavaScript代码,增强代码逻辑性。

1. 算术运算符

常见算数运算符:+ - * / %

 %:取余,两个数相处,但是不是取商,而取余数,俗称 模,例:

5 % 2 // 1
2 % 5 // 2

%取余常用场景:

(1)获取某个数字的最后n位
console.log(12345%10);
console.log(12345%100);
(2)判断奇偶性

如下示例,结果为0,说明是偶数,结果为1,说明是奇数。

num % 2; 

算数运算之中具有隐式转换:悄悄默默的转换数据类型,算术运算默认都转为数字在运算。
特殊:+运算,只要有一边是一个字符串,两边都会悄悄变为字符串,+运算变成字符串拼接。

注意:转为数字的时候,如果是一个纯数字组成的字符串,没有问题,但是如果出现了非数字字符,则为NaNNaN参与任何运算结果仍为NaN****

2.关系运算符

(1) 结果必定是一个 boolean

(2)只要一边出现数值, 就都是数值比较的规则,如果转不了就 NaN 为 false

(3)如果都是字符, 就按照字符的比较规则

(4) 0<9<A<Z<a<z

(5)!==和===不具有隐式转换, 不仅比较大小, 还会比较类型

3.逻辑运算符

&&(与、而且) ||(或者) !(非)结果是boolean值

(1) &&只有全部条件都满足,最后结果才为true,只要有一个条件不满足, 结果就为false

(2) &&的短路逻辑:条件&&操作

(3)||只要一个条件为true,结果则为true,只有全部条件为false,才 为false   

(4) ! 取反, 颠倒布尔值

 

特殊:短路逻辑:

a、 &&:如果前一个条件为true,则后一个操作才执行

       如果前一个条件为false,则后一个操作不执行

       固定套路:实现了简化版的if结构:if(){},注意只能是 简单的if操作,操作只有一句话的时候

       语法:条件&&(操作);

       比如:

    ```js
        if(total>=500){total*=0.8;}

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

       if vs &&短路:

       1、&&短路:操作只有一句话的时候

       2、if:操作只有多句话的时候

 

b、 ||:如果前一个条件为true,则后一个不需要再管

       如果前一个条件为false,需要看看后一个

       语法:var x=值1||值2;

             作用:做老IE兼容,实现了两个值二选一

 

4.赋值运算符

(1)含义:赋值运算:一句话执行了两个操作:运算,再保存回去
+= -= *= /= %=

(2)何时使用:只要取出变量的值做了计算,之后还要在保存回去时,就必须使用赋值运算

    total=total*0.8;//total*=0.8;

    m+=n;//m=m+n;//累加

    m*=n;//m=m*n;//累乘

 

(3)递增 和 递减

i++ => i+=1 => i=i+1

累加 和 递增 如果每次操作数固定是1,使用递增,否则,使用累加

(4)前++ 和 后++ 有区别

   单独使用时,两者没有区别都会+1

   但是如果参与了别的表达式,i肯定会+1

    前++,返回的是加了之后的新值

    后++,返回的是加了之前的旧值

5. 一元运算符

1) 在参与其他表达式的时候, 前自增(自减)会先计算, 在使用

   (2)在参与其他表达式的时候, 后自增(自减)会使用, 在计算

6.三目运算符

使用格式:

条件? 条件为 true 的操作: 条件为 false 的操作

7.位运算

(1)左移:a<<n, 相当于 a 乘 2 的 n 次方

(2)右移:a>>n, 相当于 a 除 2 的 n 次方

(3)取整:m>>>0 || m^0

8.比较运算

  (1)包含:> < >= <= == != === !==

      返回:true、false

      隐式转换:默认一切都转为数字,再比较大小

特殊:

a、 如果参与比较的两个值都是字符串

     会按位pk每个字符串16进制unicode号(10进制ascii码)

     直到比出结果位置

     0-9<A-Z<a-z 中文(第一个字:一:4e00)

    (最后一个字:龥:9fa5)

b、 NaN不大于,不小于,不等于任何值,包括自己

      结论:无法使用普通的关系运算,判断一个数字是不是NaN

      解决:isNaN():判断是不是NaN

          经常反用:!isNaN(x):判断x是不是一个有效数字

  c、 必须用:undefined===null

全等:===:数值相同,类型相同

其实就是不带隐式转换的等值比较

注意:想要区分null和undefined必须使用全等

例:重写String():写出String()的原理


function String(x){

    if(x===null){

        return "null";

    }else if(x===undefined){

        return "undefined";

    }else{

        return x.toString();

    }

}
console.log(String(123));

console.log(String(null));

console.log(String(undefined));