乘性操作符
- 在JS里面定义了3个乘性操作符,乘法,除法和求模。这些操作数在非数值的情况下会执行自动的类型转换。
- 如果参与乘法计算的某个操作数不是数值,后台有优先使用Number()转型函数将其转换为数值。也就是说空字符串将被当做0,布尔true将被当做1
乘法
乘法操作符由一个星号(*)表示,用于计算两个数值的乘积。
例如:
var result = 34*56;
在处理特殊值得情况下,乘性操作符遵循下面的规则:
- 如果操作数都是数值,执行常规的乘法计算,即两个正数或者两个负数相乘的结果还是正数,而如果只有一个操作数有符号,那么结果就是负数。如果乘积超过了JS的表示范围则返回Infinity或者-Infinity
- 如果是Infinity与0相乘则结果是NaN
- 如果一个操作数是NaN,则结果就是NaN
- 如果是Infinity与非0数值相乘。则结果就是Infinity或者-Infinity取决于符号操作数的符号
- 如果是Infinity与Infinity相乘,则结果是Infinity
- 如果有一个操作数不是数值,则后台调用Number()将其转化为数值,然后在计算
除法
除法操作符由一个(/)表示,
例如:
var result = 66/11;
与乘法类似,除法操作符遵循下面的规则:
- 如果操作数是数值,即两个正数或两个负数相除的结果还是正数,而如果只有一个操作数有符号,那么结果就是负数。如果超过了数值的表示范围。即返回Infinity或者-
Infinity - 如果有一个操作数是NaN,则结果是NaN
- 如果是Infinity被Infinity除,则结果是NaN
- 如果是0/0则结果是NaN
- 如果是非0的有限数被0去除,则结果就是Infinity或者-Infinity取决于无穷的符号
- 如果是Infinity被任何非0数值除,结果就是Infinity或者-Infinity取决于无穷的符号
- 如果一个操作数不是数值,则后台调用Number()将其转化为数值
求模
求模(余数)操作符由一个百分号(%)表示,用法:
var result = 26%5 ; // 等于1
与另外两个乘性操作符类似,求模运算符会遵循下面的规则:
- 如果操作数都是数值,则执行常规的除法计算。返回除得的余数
- 如果被除数是无穷大值而除数是有限大的数值,则结果是NaN
- 如果被除数是有限大的数值而除数是0,则返回NaN
- 如果是Infinity/Infinity则结果是NaN
- 如果被除数是有限大的数值而除数是无穷大的数值,则结果是被除数;
- 如果被除数是0,则结果是0
- 如果有一个操作数不是数值,则后台调用Number()将其转化为数值
加性操作符
加法和减法这两个应该说最简单的算术操作符了。但是在JS里面这2个操作符都有一系列行为。与乘法操作符类型。加性操作符也会后台转换不同的数据类型。
-
加法
加法操作符(+)的用法如下:
var result = 1+2;
如果两个操作符都是数值,则执行常规的加法计算。然后根据下面规则返回结果:
- 如果有一个操作数是NaN,则结果就是NaN
- 如果是Infinity加Infinity,则结果就是Infinity
- 如果是-Infinity加-Infinity,则结果就是-Infinity
- 如果是Infinity加-Infinity,则结果就是NaN
[关于无穷只要2个不一样,结果就是NaN] () - 如果是+0加+0,则结果就是+0;
- 如果是-0加-0,则结果就是-0;
- 如果是+0加-0,则结果就是+0
如果有一个操作数是字符串,那么就遵循下面的规则
- 如果两个操作数都是字符串,则将第二个操作数与第一个操作数拼接起来.
- 如果只有一个操作数是字符串,则将另一个操作数转换为字符串然后再讲两个字符串拼接起来
- 如果有一个操作数是对象,数值或者布尔值,则调用他们的toString()方法取得相应的字符串值,然后在应用于前面关于字符串的规则,对于undefined和空,则分别调用String()函数并取得字符串"undefined"和"null";
见下例:
var result = 5+5; //两个数值相加
window.alert(result); //10
var result2 = 5+ "5"; //一个数值和一个字符串
window.alert(result2); // 结果就是55
var num1 = 5;
var num2 = 10 ;
var message = "The message is" + num1 +num2;
window.alert(message) //The message is 510;
var num1 = 5;
var num2 = 10 ;
var message = "The message is" + (num1 +num2);
window.alert(message) //The message is 15;
在这个例子里面一对圆括号将两个数值变量括在了一起,这样就是先算括号里面的,然后在与字符串拼接起来
减法
减法操作符(-)是另一个极为常用的操作符
var result = 2-1;
与加法类似,他也需要遵循下面的规则;
- 如果两个操作数都是数值,则执行常规的减法操作并返回结果
- 如果有一个操作数是NaN,则结果就是NaN
- 如果是Infinity减去Infinity,则结果就是NaN
- 如果是-Infinity减去-Infinity,则结果就是NaN
- 如果是正无穷减去负无穷,则结果就是正无穷
-
如果是负无穷减去正无穷,则结果就是负无穷
关于无穷只要2个不一样看的就是前面。 - 如果是+0减去+0,结果就是+0;
- 如果是+0减去-0,结果就是-0;
- 如果是-0减去-0 ,结果就是+0;
- 如果一个操作数是字符串,布尔,null或者undefined,则先后在后台调用Number()函数将其转化为数值,然后在根据前面的规则,进行减法计算。如果转换的结果是NaN,减法的结果就是NaN
- 如果有一个操作数是对象,则调用valueof()方法取得表示该对象的数值,如果得到的值是NaN,则减法结果就是NaN,如果对象没有valueof()方法,则调用toString()方法,得到字符串传换成数值.
下面几个例子说明规则
var result = 5-true; //结果就是4
var result2 = NaN -1 ; //结果就是NaN
var result3 = 5-3 ; //2
var result4 = 5 - ""; //5因为""转换成了0
var result5 = 5- "2"; //3 因为 "2"转换成了2
var result6 = 5-null ; //5 因为null变成了0
总结:
乘法预算。只要是判断不准的基本上就是NaN;
除法运算也一样
加法运算 要都是无穷只是符号不一样的话。结果就是NaN
减法运算 要都是无穷只是符号不一样的话,看前面,前面正就是正,前面负就是负