JavaScript 中的数学运算符 – JavaScript 完全手册(2018版)

10年服务1亿前端开发工程师

小编推荐:掘金是一个面向程序员的高质量技术社区,从 一线大厂经验分享到前端开发最佳实践,无论是入门还是进阶,来掘金你不会错过前端开发的任何一个技术干货。

注:本文为 《 JavaScript 完全手册(2018版) 》第32节,你可以查看该手册的完整目录。

对任何编程语言执行数学运算和微积分都是很常见的事情。 JavaScript 提供了几个运算符来帮助我们处理数字。

算术运算符

相加 (+)

const three = 1 + 2
const four = three + 1

如果你使用字符串,+ 运算符也可以作为字符串连接,所以要注意:

const three = 1 + 2
three + 1 // 4
'three' + 1 // three1

相减(-)

const two = 4 - 2

除法(/)

返回第一个数字和第二个数字之间商:

const result = 20 / 5 //result === 4
const result = 20 / 7 //result === 2.857142857142857

如果除以 0,JavaScript 不会抛出任何错误,而是返回 Infinity(如果是负值返回 -Infinity)。

1 / 0 //Infinity
-1 / 0 //-Infinity

取余(%)

取余在很多情况下都很有用:

const result = 20 % 5 //result === 0
const result = 20 % 7 //result === 6

对 0 取余始终是 NaN,一个特殊值,意思是“不是一个数字”:

1 % 0 //NaN
-1 % 0 //NaN

乘法 (*)

1 * 2 //2
-1 * 2 //-2

求幂(**)

将第一个操作数乘第二个操作数次数:

1 ** 2 //1
2 ** 1 //2
2 ** 2 //4
2 ** 8 //256
8 ** 2 //64

一元运算符

递增 (++)

递增数字。这是一个一元运算符,如果放在数字之前,则返回递增后的值。

如果放在数字后面,它将返回原始值,然后递增。

let x = 0
x++ //0
x //1
++x //2

递减(–)

和递增运算符相似,不过它递减值。

let x = 0
x-- //0
x //-1
--x //-2

一元负号(-)

返回操作数的负值

let x = 2
-x //-2
x //2

一元正号(+)

如果操作数不是数字,它会尝试将操作数转换数字。否则,如果操作数已经是一个数字,它什么都不做。

let x = 2
+x //2

x = '2'
+x //2

x = '2a'
+x //NaN

赋值快捷方式

常规赋值运算符 = ,对所有算术运算符的都有一个快捷方式,它们允许您组合赋值,将第一个操作数和第二个操作数的结果赋值给第一个操作数。

它们是:

+=:加法赋值
-=:除法赋值
*=:乘法赋值
/=:除法赋值
%=:取余赋值
**=:求幂赋值

例子:

const a = 0
a += 5 //a === 5
a -= 2 //a === 3
a *= 2 //a === 6
a /= 2 //a === 3
a %= 2 //a === 1

优先级

每个复杂的表达式都会引入优先问题。

看这个:

const a = 1 * 2 + 5 / 2 % 2

结果等于 2.5。但是为什么呢?哪个运算先执行,哪个后执行?

有些运算符的优先级比其它的高。优先级规则如下:

  • - + ++ -- 一元运算符,递增,递减
  • * / % 乘法/除法
  • + - 加法/减法
  • = += -= *= /= %= **= 赋值运算

同一级别的运算符(如 +- )按找到的顺序执行

按照上面的顺序,我们可以解决这个计算:

const a = 1 * 2 + 5 / 2 % 2
const a = 1 * 2 + 5 / 2 % 2
const a = 2 + 2.5 % 2
const a = 2 + 0.5
const a = 2.5

如果你觉得本文对你有帮助,那就请分享给更多的朋友
关注「前端干货精选」加星星,每天都能获取前端干货
赞(1) 打赏
未经允许不得转载:WEB前端开发 » JavaScript 中的数学运算符 – JavaScript 完全手册(2018版)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

前端开发相关广告投放 更专业 更精准

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏