这是我参与更文挑战的第16天,活动详情查看: 更文挑战
你是不是以为乘性操作符就是乘号?no no no,在js中,乘性操作符共有三种,分别是乘法、除法和取模(有时候我们也称它为取余)。他们只能对数值进行处理,如果处理的数据不是数值的话,他们就会对目标值进行类型转换。如果乘性操作符有不是数值的操作数,则该操作数会在后台被使用Number()转型函数转换为数值。这意味着空字符串会被当成0,而布尔值true会被当成1。
乘法操作符
乘法操作符很简单,就和我们数学中学的乘法一样,不过在计算机语言中,乘号并不不是我们记忆中的那个 x ,而是用 * 代替。其他的用法就都一样了。
let a = 5 * 10
console.log(a) // 50
复制代码
不过,乘法操作符在处理一些特殊值的时候也有一些特殊行为
- 如果操作数都是数值,则执行常规的乘法运算,即两个正值相乘是正值,两个负值相乘也是正值,正负符号不同的值相乘得到负值。如果ECMAScript不能表示乘积,则返回Infinity或-Infinity。
- 如果有任一操作数是NaN,则返回NaN。
- 如果是Infinity乘以o,则返回NaN。
- 如果是Infinity乘以非0的有限数值,则根据第二个操作数的符号返回Infinity或-Infinity。
- 如果是Infinity乘以Infinity,则返回Infinity。
- 如果有不是数值的操作数,则先在后台用Number()将其转换为数值,然后再应用上述规则。
除法操作符
除法操作符和我们数学中的那个除法一样,不同的我们不再用 ÷ 号进行除法的运算,而是用 / 号进行除法的运算。
let a = 50 / 10
console.log(a) // 5
复制代码
同乘法操作符一样,除法操作符在针对特殊值也有一些特殊的操作
- 如果操作数都是数值,则执行常规的除法运算,即两个正值相除是正值,两个负值相除也是正值,符号不同的值相除得到负值。如果ECMAScript不能表示商,则返回Infinity或-Infinity。
- 如果有任一操作数是NaN,则返回NaN。
- 如果是Infinity除以Infinity,则返回NaN。
- 如果是0除以0,则返回NaN。
- 如果是非0的有限值除以0,则根据第一个操作数的符号返回Infinity或-Infinity。
- 如果是Infinity除以任何数值,则根据第二个操作数的符号返回Infinity或-Infinity。
- 如果有不是数值的操作数,则先在后台用Number()函数将其转换为数值,然后再应用上述规则。
取模操作符
取模操作符的作用就是进行取余操作,取余符就是一个百分号(%)。
let a = 15 % 10
console.log(a) // 5
复制代码
当然,乘法操作符和除法操作符有的,取模操作符也有,取模操作符对特殊值也有一些特殊的行为。
- 如果操作数是数值,则执行常规除法运算,返回余数。
- 如果被除数是无限值,除数是有限值,则返回NaN。
- 如果被除数是有限值,除数是0,则返回NaN。
- 如果是Infinity除以Infinity,则返回NaN。
- 如果被除数是有限值,除数是无限值,则返回被除数。
- 如果被除数是0,除数不是0,则返回0。
- 如果有不是数值的操作数,则先在后台用Number()函数将其转换为数值,然后再应用上述规则。
关于第一条给几个例子
99 % 10 // 9
9 % 10 // 9
15 % 16 // 15
复制代码
这里最后再提一下,js中的小数存在精度问题,在以上操作符中同样存在。
0.1*0.2 = 0.020000000000000004
0.03/0.00003=999.9999999999999
123.12 % 10 = 3.1200000000000045
复制代码
好了,愉快的一天又结束了,祝大家有个好梦,晚安。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END