• 【JavaScript】运算符及其优先级


    目录

    一、算术运算符

    1. 常用的算术运算符

    2. 算术运算符的注意事项

    二、递增和递减运算符

    1. 前置递增(递减)运算符

    2. 后置递增(递减)运算符

    3. 前缀和后缀的区别

    三、比较运算符/关系运算符

    四、逻辑运算符

    1. '&&'运算中的短路现象

    2. '||'运算中的短路现象

    五、位运算符

    六、赋值运算符

    七、三元运算符

    八、运算符优先级


    一、算术运算符

    算术运算符用于对两个变量或值进行算术运算,与数学上的加、减、乘、除类似。

    1. 常用的算术运算符

    运算符

    运算

    示例

    解释说明

    +

    1 + 5

    6

    -

    8 - 4

    4

    *

    3 * 4

    12

    /

    3 / 2

    1.5

    %

    取余数(取模)

    7 % 5

    2

    2. 算术运算符的注意事项

    • 进行四则混合运算时,运算顺序要遵循数学中“先乘除后加减”的原则。
    • 在进行取模运算时,运算结果的正负取决于被模数(%左边的数)的符号,与模数(%右边的数)的符号无关。
    • 在开发中尽量避免利用浮点数进行运算,因为有可能会因JavaScript的精度导致结果的偏差。
    • 使用“+”和“-”可以表示正数或负数。即+、-既是单目运算符又是双目运算符。

    单目运算符(一元运算符):参与运算的对象只有一个,并运算符必须出现在运算对象的左边。(如+5,-6)

    双目运算符(二元运算符):参与运算的对象有两个。(如a+b)

    注意:

    • 表达式是各种类型的数据、变量和运算符的集合,最简单的表达式可以是一个变量或字面量。
    • 表达式最终都会有一个返回值。

    二、递增和递减运算符

    使用递增(++)递减(--)运算符可以快速地对变量的值进行递增和递减操作,它属于一元运算符,只对一个表达式进行操作。递增和递减运算符的优先级高于“+”“-”等运算符。

    1. 前置递增(递减)运算符

    递增和递减运算符写在变量前面,返回的是计算后的结果。

    1. var a = 5;
    2. a++;
    3. console.log(a); // 输出:6
    4. var n=5,m=3,k;
    5. k = ++n*m; // 先加1,后运算
    6. console.log(n);
    7. console.log(k); // 输出:18

    2. 后置递增(递减)运算符

    递增和递减运算符写在变量后面,返回的是计算前的结果。

    1. var b = 5;
    2. ++b;
    3. console.log(b); //输出:6
    4. var n=5,m=3,k;
    5. k = n++*m; // 先运算,后加1
    6. console.log(n);
    7. console.log(k); // 输出:15

    3. 前缀和后缀的区别

    • 作为独立的语句,没有区别:都是让运算对象+1。
    • 若放在表达式中:前缀表达式先让变量+1,然后再使用变量的值;后缀表达式先使用变量的值,然后再让变量+1。

    三、比较运算符/关系运算符

    比较运算符用于对两个数据进行比较,其结果是一个布尔值,即true或false ,常用的比较运算符及用法见下表。

    运算符

    运算

    示例

    结果

    >

    大于

    5 > 5

    false

    <

    小于

    5 < 5

    false

    >=

    大于或等于

    5 >= 5

    true

    <=

    小于或等于

    5 <= 5

    true

    ==

    等于(只比较值)

    5 == 4

    false

    !=

    不等于(只比较值)

    5 != 4

    true

    ===

    全等(先判断类型、后判断值)

    5 === 5

    true

    !==

    不全等(类型、值)

    5 !== '5'

    true

    1. var a = '123';
    2. var b = 123;
    3. console.log(a == b); // 输出:true
    4. console.log(a === b); // 输出:false

    四、逻辑运算符

    逻辑运算符用于对布尔值进行运算,其返回值也是布尔值。在实际开发中,逻辑运算符经常用于多个条件的判断,常用的逻辑运算符见下表。

    运算符

    运算

    示例

    结果

    &&

    a && b

    a和b都为true,结果为true,否则为false

    ||

    a || b

    a和b中至少有一个为true,结果为true,否则为false

    !

    非(取反)

    !a

    单目运算符,若a为false,结果为true,否则相反

    1. '&&'运算中的短路现象

    当"表达式1"为假时,不运算"表达式2"

    1. var a = 10, b = 5, k;
    2. k = a>6 && (--b<3); // k所等于的第一个表达式为真,第二个表达式为假
    3. console.log('k=', k); // 输出:false
    4. console.log('b=', b); // 输出:4
    5. // '&&'运算中的短路现象:当"表达式1"为假时,不运算"表达式2"
    6. var n = 10, m = 5, z;
    7. z = n<6 && (--m<3); // z所等于的第一个表达式为假,第二个表达式为假
    8. console.log('z=', z); // 输出:false
    9. console.log('m=', m); // 输出:5————因为短路了,没有运算

    2. '||'运算中的短路现象

    当"表达式1"为真时,不运算"表达式2"

    1. var n = 10, m = 5, z;
    2. z = n < 6 || (--m < 3); // z所等于的第一个表达式为假,第二个表达式为假
    3. console.log('z=', z); // 输出:false
    4. console.log('m=', m); // 输出:4
    5. // '||'运算中的短路现象:当"表达式1"为真时,不运算"表达式2"
    6. var a = 10, b = 5, k;
    7. k = a > 6 || (--b < 3); // k所等于的第一个表达式为真,第二个表达式为假
    8. console.log('k=', k); // 输出:true
    9. console.log('b=', b); // 输出:5————因为短路了,没有运算

    五、位运算符

    用来对数据进行二进制运算,将参与运算的操作数视为由二进制(0和1)组成的32位的串。 

    运算符

    运算

    示例

    结果

    &

    按位'与'

    a & b

    a和b对应的二进制位都为1时,结果为1,否则为0

    |

    按位'或'

    a ||b

    a和b对应的二进制位有一个为1时,结果为1

    ^

    按位'异或'

    a^b

    两个对应的二进制位相同为0,不同为1

    例:按位'与'运算                                                     按位'异或'运算

                                                    

    六、赋值运算符

    赋值运算符用于将运算符右边的值赋给左边的变量,常用的赋值运算符及示例见下表。

    运算符

    运算

    示例

    结果

    =

    赋值

    a = 3;

    a = 3

    +=

    加并赋值

    a = 3; a += 2;

    a = 5

    -+

    减并赋值

    a = 3; a -= 2;

    a = 1

    *=

    乘并赋值

    a = 3; a *= 2;

    a = 6

    /=

    除并赋值

    a = 3; a /= 2;

    a = 1.5

    %=

    模并赋值

    a = 3; a %= 2;

    a = 1

    +=

    连接并赋值

    a = 'abc'; a += 'def';

    a = 'abcdef'

    <<=

    左移位并赋值

    a = 9; a <<= 2;

    a = 36

    >>=

    右移位并赋值

    a = -9; a >>= 2;

    a = -3

    >>>=

    无符号右移位并赋值

    a = 9; a >>>= 2;

    a = 2

    &=

    按位“与”并赋值

    a = 3; a &= 9;

    a = 1

    ^=

    按位“异或”并赋值

    a = 3; a ^= 9;

    a = 10

    |=

    按位“或”并赋值

    a = 3; a |= 9;

    a = 11

    常用的赋值运算符及示例如下。 

    1. console.log(Boolean('')) // false
    2. var age = 10;
    3. age += 5; // 相当于age = age + 5;
    4. console.log(age); // 输出结果:15
    5. age -= 5; // 相当于age = age - 5;
    6. console.log(age); // 输出结果:10
    7. age *= 10; // 相当于age = age * 10;
    8. console.log(age); // 输出结果:100

    七、三元运算符

    三元运算符是一种需要三个操作数的运算符,运算的结果根据给定条件决定。

    条件表达式 ? 表达式1 : 表达式2

    语法说明:先求条件表达式的值,如果为true,则返回表达式1的执行结果;如果条件表达式的值为false,则返回表达式2的执行结果。

    八、运算符优先级

    运算符优先级是指表达式中所有运算符参与运算的先后顺序,优先级如下表。

    结合方向

    运算符

    结合方向

    运算符

    ()

    ==   !=    ===    !== 

    .   []   new(有参数,无结合性)

    new(无参数)

    ^

    ++(后置)  --(后置)

    !   ~   -(负数)   +(正数)   ++(前置)   --(前置)   typeof   void   delete 

    &&

    ** 

    || 

    *    /   % 

    ?: 

    +   - 

    =   +=   =   *=  /=   %=    <<=   >>=    >>>=    &=    ^=   |= 

    <<    >>    >>> 

    <   <=   >   >=    in   instanceof 

    注意:所有运算符中,单目运算符的优先级永远最高。

  • 相关阅读:
    单调队列优化的DP——最大子序和
    IDEA 好用的插件
    vscode 自定义(修改已有)主题教程
    Yocto Project 编译imx-第1节(下载和编译)
    【CSS】一文搞懂 em、px、rem、vh、vw 的区别!
    Wi-Blog 项目拆解(一):Maven项目的创建和常用Dependency配置
    睿趣科技:抖音开网店新手卖什么好
    pycharm访问远程GPU服务器终端并使用Tmux终端复用器
    ArcGIS基础:如何在大量数据里挑选随机样本(创建随机点工具)
    卖股票的最佳时机II[贪心 || 动态规划]
  • 原文地址:https://blog.csdn.net/weixin_51481135/article/details/127716633