【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. 前置递增(递减)运算符

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

        var a = 5;
        a++;
        console.log(a); // 输出:6


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

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

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

        var b = 5;
        ++b;
        console.log(b); //输出:6


        var n=5,m=3,k;
        k = n++*m; // 先运算,后加1
        console.log(n);
        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

        var a = '123';
        var b = 123;

        console.log(a == b); // 输出:true
        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"

        var a = 10, b = 5, k;
        k = a>6 && (--b<3); // k所等于的第一个表达式为真,第二个表达式为假
        console.log('k=', k); // 输出:false
        console.log('b=', b); // 输出:4


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

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

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

        var n = 10, m = 5, z;
        z = n < 6 || (--m < 3); // z所等于的第一个表达式为假,第二个表达式为假
        console.log('z=', z); // 输出:false
        console.log('m=', m); // 输出:4


        // '||'运算中的短路现象:当"表达式1"为真时,不运算"表达式2"
        var a = 10, b = 5, k;
        k = a > 6 || (--b < 3); // k所等于的第一个表达式为真,第二个表达式为假
        console.log('k=', k); // 输出:true
        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

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

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

七、三元运算符

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

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

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

八、运算符优先级

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

结合方向

运算符

结合方向

运算符

()

==   !=    ===    !== 

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

new(无参数)

^

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

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

&&

** 

|| 

*    /   % 

?: 

+   - 

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

<<    >>    >>> 

<   <=   >   >=    in   instanceof 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>