JavaScript运算符

本文详细介绍了JavaScript中的各种运算符,包括赋值运算符、算数操作符(递增/递减、乘法、除法、加法、减法、求模)、关系运算符、相等运算符(相等与不相等、全等与不全等)、条件运算符、布尔操作符(逻辑非、逻辑与、逻辑或)、逗号运算符以及位运算符(按位非、按位与、按位或、按位异或、左移、有符号右移、无符号右移)。文章通过实例解析了每个运算符的用法和特性,帮助读者深入掌握JavaScript运算符的使用。
摘要由CSDN通过智能技术生成

目录

1.赋值运算符

2.算数操作符

(1)递增和递减操作符

(2)乘法

(3)除法

(4)加法

(5)减法

(6)求模

3.关系运算符

4.相等运算符

(1)相等和不相等

2)全等和不全等

5.条件运算符

6.布尔操作符

(1)逻辑非

(2)逻辑与

(3)逻辑或

7.逗号运算符

8.位运算符

(1)按位非

(2)按位与

(3)按位或

(4)按位异或

(5)左移

(6)有符号的右移

(7)无符号右移


ECMA-262 描述了一组用于操作数据值的操作符,包括算术操作符(如加号和减号)、位操作符、关系操作符和布尔操作符等。

1.赋值运算符

简单的赋值操作符由等于号(=)表示,其作用就是把右侧的值赋给左侧的变量,如下面的例子所示:

var num = 10;

如果在等于号(=)前面再添加乘性操作符、加性操作符或位操作符,就可以完成复合赋值操作。这种复合赋值操作相当于是对下面常规表达式的简写形式:

var num = 10;
num = num + 10;

其中的第二行代码可以用一个复合赋值来代替:

var num = 10;
num += 10;

每个主要算术操作符(以及个别的其他操作符)都有对应的复合赋值操作符。这些操作符如下所示:

var a += 2;     // 加/赋值(+=);     //该语句等价于 var a; a = a + 2;  
var b -= 2;     // 减/赋值(-=);      //该语句等价于 var a; a = a - 2;
var c *= 2;     // 乘/赋值(*=);     //该语句等价于 var a; a = a * 2;
var d /= 2;     // 除/赋值(/=);     //该语句等价于 var a; a = a / 2;
var e %= 2;     // 模/赋值(%=);     //该语句等价于 var a; a = a % 2;
/*  
    左移/赋值(<<=);
    result = 【要位移的数字】 << 【位移位数】
        按位左移运算符 (<<) 将 【要位移的数字】 的位左移 【位移位数】中指定的位数。

例:
    var temp;
    temp = 14 << 2;

    变量 temp 的值为 56,因为 14 (即二进制的 00001110)向左移两位等于 56 (即二进制的 00111000)。Javascript 按位左移运算符 (<<) 将表达式数字转换成二进制,之后向左移表达式的位。

*/

2.算数操作符

(1)递增和递减操作符

        递增和递减操作符直接借鉴自 C,而且各有两个版本:前置型和后置型。顾名思义,前置型应该位于要操作的变量之前,而后置型则应该位于要操作的变量之后。因此,在使用前置递增操作符给一个数值加 1 时,要把两个加号(++)放在这个数值变量前面,如下所示:

var age = 29;
++age;

在上面这个例子中,前置递增操作符把 age 的值变成了 30(为 29 加上了 1)。实际上,执行这个前置递增操作与执行以下操作的效果相同:

var age = 29;
age = age + 1;

执行前置递减操作的方法也类似,结果会从一个数值中减去 1。使用前置递减操作符时,要把两个减号(--)放在相应变量的前面,如下所示:

var age = 29;
--age;

这样, age 变量的值就减少为 28(从 29 中减去了 1)。执行前置递增和递减操作时,变量的值都是在语句被求值以前改变的。

var age = 29;
var anotherAge = --age + 2;
alert(age); // 输出 28
alert(anotherAge); // 输出 30

由于前置递增和递减操作与执行语句的优先级相等,因此整个语句会从左至右被求值。

总结:后置++ 先用其原值作为表达式的值,再对本身进行自加;

           前置++ 先对其本身自加,再用其值作为表达式的值。

           后置++与前置++对于变量本身无区别。

(2)乘法

乘法操作符由一个星号(*)表示,用于计算两个数值的乘积。

其语法类似于 C,如下面的例子所示:

var result = 34 * 56;

在处理特殊值的情况下,乘法操作符遵循下列特殊的规则:

  • 如果操作数都是数值,执行常规的乘法计算,即两个正数或两个负数相乘的结果还是正数,而如果只有一个操作数有符号,那么结果就是负数。如果乘积超过了 ECMAScript 数值的表示范围,则返回 Infinity -Infinity
  • 如果有一个操作数是 NaN(not a number),则结果是 NaN
  • 如果是 Infinity 0 相乘,则结果是 NaN
  • 如果是 Infinity 与非 0 数值相乘,则结果是 Infinity -Infinity,取决于有符号操作数的符号;
  • 如果是 Infinity Infinity 相乘,则结果是 Infinity
  • 如果有一个操作数不是数值,则在后台调用 Number()将其转换为数值,然后再应用上面的规则。 

(3)除法

除法操作符由一个斜线符号(/)表示,执行第二个操作数除第一个操作数的计算,如下面的例子所示:

var result = 66 / 11;

与乘法操作符类似,除法操作符对特殊的值也有特殊的处理规则。这些规则如下:

  • 如果操作数都是数值,执行常规的除法计算,即两个正数或两个负数相除的结果还是正数,而如果只有一个操作数有符号,那么结果就是负数。如果商超过了 ECMAScript 数值的表示范围,则返回 Infinity -Infinity
  • 如果有一个操作数是 NaN,则结果是 NaN
  • 如果是 Infinity Infinity 除,则结果是 NaN
  • 如果是零被零除,则结果是 NaN
  • 如果是非零的有限数被零除,则结果是 Infinity -Infinity,取决于有符号操作数的符号;
  • 如果是 Infinity 被任何非零数值除,则结果是 Infinity 或-Infinity,取决于有符号操作数的符号; 
  • 如果有一个操作数不是数值,则在后台调用 Number()将其转换为数值,然后再应用上面的规则。

(4)加法

加法操作符(+)的用法如下所示:

var result = 1 + 2;

如果两个操作符都是数值,执行常规的加法计算,然后根据下列规则返回结果:

  • 如果有一个操作数是 NaN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值