- 前言
- 关于 ECMASCRIPT 发展史和现状
- ES6 带来的重大特性
- ES2016(ES7)的改进
- ES2017(ES8)带来的重大新特性
- ES2018(ES9)带来的重大新特性
- JavaScript 编码风格指南
- JavaScript 词法结构(构建块)
- JavaScript 变量
- JavaScript 数据类型
- JavaScript 表达式
- 原型继承
- 如何使用 JavaScript 中的 Classes(类)
- JavaScript 异常处理
- JavaScript 中的分号(;)
- JavaScript 中的引号
- JavaScript 字面量模板(Template Literals)指南
- JavaScript 中的 function(函数)
- JavaScript 箭头函数(Arrow Function)
- JavaScript 中的闭包(Closures)
- JavaScript 数组(Arrays)
- JavaScript 中的循环(Loops)
- JavaScript 中的事件(Events)
- JavaScript 中的事件循环(Event Loop)
- JavaScript 异步编程和回调
- 理解 JavaScript 中的 Promises
- 用 async 和 await 编写现代 JavaScript 异步代码
- JavaScript 中的 循环(Loops) 和 作用域(Scope)
- JavaScript 定时器 setTimeout() 和 setInterval()
- JavaScript 中的 this
- JavaScript 严格模式(Strict Mode)
- JavaScript 中的 立即执行函数表达式(IIFE)
- JavaScript 中的数学运算符
- JavaScript 中的 Math 对象
- 介绍 ES Modules(模块)
- 介绍 CommonJS
- JavaScript 术语表
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
JavaScript 中的数学运算符
对任何编程语言执行数学运算和微积分都是很常见的事情。 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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论