JavaScript-算数运算符

本文详细介绍了编程中常用的算术运算符,包括加法、减法、乘法、除法、取模、幂运算以及自增自减运算符。不仅解释了每个运算符的基本用法,还探讨了它们在特定情况下的特殊行为。

一、算术运算符

运算符描述例子x 运算结果y 运算结果
+加法x=y+275
-减法x=y-235
*乘法x=y*2105
/除法x=y/22.55
%取模(余数)x=y%215
++自增x=++y66
++自增x=y++56
--自减x=--y44
--自减x=y--54

二、加法 (+)

2.1 作用

(1)数值求和

(2)字符串拼接

2.2 示例

加法

(1)布尔值会自动转换为 数值,false 转换为 0,true 转换为 1,然后再相加。

2.3 重载

加法运算符是在 运行时决定,到底是执行相加,还是执行连接。也就是说, 运算子的不同,导致了不同的语法行为,这种现象称为“重载”(overload)。

由于加法运算符存在重载,可能执行两种运算,使用的时候必须很小心。

重载

上面代码中,由于从左到右的运算次序,字符串的位置不同会导致不同的结果

除了加法运算符,其他算术运算符(比如减法、除法和乘法)都不会发生重载。他们的规则是 所有运算子一律转为数值,再进行相应的数学运算。

都不重载

上面代码中,减法、除法和乘法运算符,都是将字符串自动转为数值,然后再运算。

2.4 对象的加法

(1)如果运算子是对象,必须先转成原始类型的值,然后再相加。

(2)转换规则

首先,调用对象的 valueOf() 方法,返回对象自身,再调用对象的 toString() 方法,将其转为字符串(原始类型)

对象的加法

2.5 特殊行为

(1)某个运算数是 NaN,那么结果为 NaN。

(2)-Infinity 加 -Infinity,结果为 -Infinity。

(3)Infinity 加 -Infinity,结果为 NaN。

(4)+0 加 +0,结果为 +0。

(5)-0 加 +0,结果为 +0。

(6)-0 加 -0,结果为 -0。

(7)任何数据类型 + 字符串 = 字符串

字符串

(8)若数值求和,undefined 转换为 NaN,null 转换为 0

数值求和

(9)若字符串拼接,undefined 转换为 'undefined',null 转换为 'null',false 转换为 'false',true 转换为 'true'

字符串拼接

三、减法 (-)

3.1 特殊行为

(1)某个运算数是 NaN,那么结果为 NaN。

(2)Infinity 减 Infinity,结果为 NaN。

(3)-Infinity 减 -Infinity,结果为 NaN。

(4)Infinity 减 -Infinity,结果为 Infinity。

(5)-Infinity 减 Infinity,结果为 -Infinity。

(6)+0 减 +0,结果为 +0。

(7)-0 减 -0,结果为 -0。

(8)+0 减 -0,结果为 +0。

(9)某个运算符不是数字,那么结果为 NaN。

(10)undefined 转换为 NaN,null 转换为 0

减法

四、乘法 (*)

4.1 特殊行为

(1)如果结果太大或太小,那么生成的结果是 Infinity 或 -Infinity。

(2)如果某个运算数是 NaN,结果为 NaN。

(3)Infinity 乘以 0,结果为 NaN。

NaN

(4)Infinity 乘以 0 以外的任何数字,结果为 Infinity 或 -Infinity。

Infinity或-Infinity

(5)Infinity 乘以 Infinity,结果为 Infinity。

Infinity

五、除法 (/)

5.1 特殊行为

(1)如果结果太大或太小,那么生成的结果是 Infinity 或 -Infinity。

(2)如果某个运算数是 NaN,结果为 NaN。

(3)Infinity 被 Infinity 除,结果为 NaN。

NaN

(4)Infinity 被任何数字除,结果为 Infinity。

Infinity

(5)0 除一个任何非无穷大的数字,结果为 NaN。

NaN

(6)Infinity 被 0 以外的任何数字除,结果为 Infinity 或 -Infinity。

Infinity或-Infinity

六、求余 (%)

求余运算符返回第一个操作数对第二个操作数的模,即 var1 对 var2 取模,其中 var1 和 var2 是变量。取模功能就是 var1 除以 var2 的 整型余数

6.1 示例

求余运算符(%)返回前一个运算子 后一个运算子 ,所得的 余数

求余运算符

6.2 注意

运算结果的正负号由 第一个运算子正负号 决定。

正负号

6.3 绝对值函数

为了得到 负数 的正确余数值,可以先使用绝对值函数。

绝对值函数

6.4 浮点数运算

余数运算符还可以用于浮点数的运算。但是,由于浮点数 不是精确的值,无法得到完全准确的结果。

浮点数运算

6.5 特殊行为

(1)如果被除数是 Infinity,或除数是 0,结果为 NaN。

(2)Infinity 被 Infinity 除,结果为 NaN。

(3)如果除数是无穷大的数,结果为被除数。

(4)如果被除数为 0,结果为 0。

Example

七、幂 (**)

幂运算符返回第一个操作数做底数,第二个操作数做指数的乘方。即, var1var2 ,其中 var1 和 var2 是其两个操作数。

7.1 语法

运算符: var1 ** var2

7.2 注解

(1)包括 PHP 或 Python 等的大多数语言中,都包含幂运算符(一般来说符号是 ^ 或者 **)。这些语言中的幂运算符有着比其他的单目运算符(如一元 + 或一元 - )更高的优先级。但是作为例外,在 Bash 中,** 运算符被设计为比单目运算符优先级更低

(2)在最新的 JavaScript(ES2016) 中,禁止使用带歧义的幂运算表达式。比如,底数前不能紧跟一元运算符(+/-/~/!/delete/void/typeof)

Example

7.3 示例

Example

(1)如果要反转求幂表达式结果的符号,你可以采用这样的方式:

Example

(2)强制求幂表达式的基数为负数

Example

八、自增 (++)

自增运算符为其操作数增加1,返回一个数值。

8.1 后置和前置

(1)如果后置(postfix)使用,即运算符位于操作数的后面(如 x++),那么将会在自增前返回数值。

(2)如果前置(prefix)使用,即运算符位于操作数的前面(如 ++x),那么将会在自增后返回数值。

8.2 示例

自增

8.3 练习

练习

九、自减 (--)

自减运算符将其操作数减去1,并返回一个数值。

9.1 后置和前置

(1)如果后置使用(如 x--),则在自减前返回数值。

(2)如果前置使用(如 --x),则在自减后返回数值。

9.2 示例

自减

阅读更多

参考文章 JavaScript 标准参考教程(alpha)运算符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值