一次弄懂JavaScript各种运算符,满满干货,速来围观!

2023-05-27 0 611

译者|慕课网菁英客座教授 然冬

微积分操作方式符以值(字面上量或表达式)做为其数组,并回到三个一般而言值。国际标准微积分操作方式符是加法(+),加法( – ),加法(*)和加法(/)。—— MDN

数数操作方式符是用以做数数演算的,如 + 那个记号,是用以做加法操作方式。

1. N元演算

N 代表者三个数,如十元演算,相互依赖演算。

N元演算则表示由N个值造成三个捷伊值的准则。

* 是三个相互依赖操作方式符,他由三个数相加造成第二个数。

JavaScript 中有广济操作方式符、相互依赖操作方式符、十元操作方式符。

注意:网络上可以搜索到 JavaScript 中有更多元的演算,基本上都是使用三目(元)表达式嵌套来完成的,严格上说这不属于更多元的演算。

与数数相关的只有相互依赖与十元操作方式符:

相互依赖操作方式符:

+ 加法

加法

* 加法

/ 加法

% 求余

** 幂 (ES2016 提案)

十元操作方式符:

+ 十元正号

十元负号

++ 递增

递减

2. 相互依赖操作方式符

2.1 加法(+)

加法用以做求和,将 + 左右两边的值相加,也可以用以连接字符串。

var num1 = 2;var num2 = 3;var total = num1 + num2;console.log(total); // 输出:5var firstName = hello;var lastName = world;var name = firstName + + lastName;console.log(name); // 输出:”hello world”代码块1234567891011

数字的加法是和自然数学里的加法一样,做累加操作方式。

+碰到字符串就会把两边字符连接到一起,形成三个捷伊字符串。

2.2 加法(-)

加法操作方式是将 左边的数减去 右边的数,结果是差值。

var totalApple = 10; // 一共有10个苹果var take = 4; // 小明拿走了四个苹果var left = totalApple – take; // 还有 10 – 4 个苹果console.log(left); // 输出:6代码块123456

2.3 加法(*)

加法操作方式将* 左右两边的数相加,结果是积。

var result = 5 * 6;console.log(result); // 输出:30代码块123

2.4 加法(/)

加法操作方式将 /左边的数做为被除数,右边的数做为除数,最后求出结果。

var result = 6 / 2;console.log(result); // 输出:3代码块123

在许多强类型的语言中,整数相除即便无法除尽,结果必然是整数,但在 JavaScript 中,整数相除如果无法除尽,也会回到小数部分。

console.log(2 / 5); // 输出:0.4代码块1

上面那个结果在 Java中会回到 0,但是在 JavaScript 中会反回 0.4。

注意:如果拿正负 0 做为除数,则结果会回到 Infinity 与 -Infinity。

2.5 求余(%)

求余事实上是取模演算,也是取余数。如 8 对 3 取模,结果为 2,按小学数学中的说法是 8 除 3 得 2余2,余2是结果。

var result = 8 % 3;console.log(result); // 输出:2代码块123

2.6 幂(**)

幂是 ES2016 提供的新操作方式符,用以做乘方演算。

** 左边是底数,右边是指数,如 2 ** 3 按数学中的则表示是 23,即求 2 的 3 次方。

var total = 2 ** 3; // 2 的 3次方,结果为 2 * 2 * 2 ,即8console.log(total); // 输出:8代码块123

在 JavaScript 中的幂演算与其他语言有些许区别,规范中指出禁止使用带有歧义的幂演算表达式。

如底数前不能跟随一元操作方式符。

console.log(-8 ** 2); // 在JavaScript会报错代码块1
一次弄懂JavaScript各种运算符,满满干货,速来围观!

以上幂演算是会报错的,因为 JavaScript 无法知道是要在计算完 8 的 2 次方后求反,还是计算 -8 的 2 次方。

使用括号可以提供具体的意义,消除歧义:

console.log((-8) ** 2); // -8的2次方console.log(-(8 ** 2)); // 计算完8的2次方后求反代码块123

3. 十元操作方式符

3.1 十元正号

十元正号通常不参与数学演算,而是用作类型转换,十元正号可以很方便的将其他类型转换成数字。

var num1 = +3;var num2 = +3;var num3 = +true;var num4 = +false;var num5 = +null;var timestamp = +new Date(); // 直接得到时间戳代码块123456

3.2 一元负号

十元负号也可以将其他类型的数据转换成数字,但是转换完后会在前面加上负号。

var num1 = -3;var num2 = -3;var num3 = -true;var num4 = -false;var num5 = -null;var timestamp = -new Date();代码块123456

通常比较多的使用场景是对数字取反,让值在正负值切换。

3.3 递增

递增操作方式会让值本身增加 1。

var num = 0;num++;console.log(num); // 输出:1num++;console.log(num); // 输出:2代码块123456789

这样看,递增操作方式有点像x = x + 1这种操作方式,其实只有在后置使用时的效果是和x = x + 1一样的,也是++x

前置使用的时候,会先做递增操作方式,再回到值。

后置使用时候,会先回到值,再做递增操作方式。

var num = 0;var total = 1 + (num++);console.log(total, num); // 输出:1 1代码块12345

那个是前置使用的情况,可以看到 num 的值是 1,total 的值也是 1,也是说 total 再累加的时候为(1 + 0),那个时候 num 的值为 0,再那个值回到后对 num 进行了递增,所以输出 num 结果为 1。

var num = 0;var total = 1 + (++num);console.log(total, num); // 输出:2 1代码块12345

那个是后置使用的情况,total 输出结果为 2,在求和的时候是(1 + 2),num 是在递增后再被使用的。

3.4 递减

递增操作方式会让值本身减去 1。

与递增一样,递减也具有前置使用与后置使用的情况。

var num = 1;var total = 1 + (num–);console.log(total); // 输出:2var num2 = 1;var total2 = 1 + (–num);console.log(total2); // 输出:0代码块123456789

4. 优先级

微积分符的优先级与自然数学中的相似,按照先乘除后加减的准则来,具体的可以参考下表:

一次弄懂JavaScript各种运算符,满满干货,速来围观!

括号 > 后置递增/后置递减 > 十元加法/十元加法/前置递增/前置递减 > > 加法/加法/取模 > 加法/加法

可以见到,括号的优先级是最高的,所以建议在自己不确定优先级的时候,尽量使用括号决定优先级。

如:

var res = 1 + 2 / 3 * 4 % 5 ** 7;代码块1

上面那个表达式的演算顺序,即便是知道优先级,也不是一眼就能看出来的,所以建议即便是知道优先级,也使用括号将计算顺序做区分。

将想要的计算顺序用括号包裹后:

var res = 1 + (((2 / 3) * 4) % (5 ** 7));代码块1

4. 小结

数数操作方式符主要参与演算,N 元演算是用 N 个值造成三个捷伊值,操作方式符有自己的特性和优先级,当表达式较长的时候,建议使用括号包裹来控制执行顺序。

优质内容,分享蔬果知识,帮助你成为更好的程序员!

一次弄懂JavaScript各种运算符,满满干货,速来围观!
举报/反馈

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务