阅读javascript高级程序设计随笔(六)

2.5.4乘性操作符

ECMAScript定义了3个乘性操作符:乘法、除法和求模。如果参与乘性计算的某个操作数不是数值,后台会先使用Number()函数将其转换成数值。(空字符串变成0,true变成1)

1.乘法(*)

 在处理特殊值的情况下,乘法操作符遵循下列的规则:

#如果操作数都是数值,就执行常规的乘法计算。如果超出了ECMAScript数值的范围,则返回Infinity或-Infinity

#如果有一个操作数是NaN,则结果是NaN

#如果是Infinity与0相乘,则结果是NaN

#如果是Infinity与非0数值相乘,结果是Infinity或-Infinity

#如果是Infinity与Infinity相乘,则结果是Infinity

#如果有一个操作数不是数值,则在后台调用Number()将其转换为数值,然后再应用上面的规则。

2.除法(/)

 在处理特殊值的情况下,除法操作符遵循下列的规则:

#如果操作数都是数值,就执行常规的除法计算。如果超出了ECMAScript数值的范围,则返回Infinity或-Infinity

#如果有一个操作数是NaN,则结果是NaN

#如果是Infinity除以Infinity相除,则结果是NaN

#如果是0除以0,结果是NaN

#如果是非0的有限数除以0,则结果是Infinity或-Infinity

#如果是Infinity除以非零数,则结果是Infinity或-Inifinity。

#如果有一个操作数不是数值,则在后台调用Number()将其转换为数值,然后再应用上面的规则。

3.求模(%)

在处理特殊值的情况下,除法操作符遵循下列的规则:

#如果操作数都是数值,就执行常规的除法计算,取得余数。

#如果被除数是无穷大而除数是有限大的数值,则结果是NaN

#如果被除数是有限大而除数是0,则结果是NaN

#如果是Infinity被Infinity除,则结果是NaN

#如果被除数是有限大的数值而除数是无穷大的数值,则结果是被除数;

#如果被除数是0,则结果是0;

#如果有一个操作数不是数值,则在后台调用Number()将其转换为数值,然后再应用上面的规则。

2.5.5加性操作

1.加法(+)

如果两个操作数都是数值,执行常规的加法计算,然后根据下列规则返回结果:

#如果有一个操作数是NaN,则结果是NaN

#如果是Infinity加Inifinity,则结果是Infinity;

#如果是-Infinity加-Inifinity,则结果是-Infinity

#如果是Infinity加-Infinity,则结果是NaN

#如果是+0加+0,则结果是+0;

#如果是-0加-0,则结果是-0;

#如果是+0加-0,则结果是+0.

如果有一个操作数是字符串,那么遵循以下规则:

#如果两个操作数是字符串,则将第二个操作数与第一个操作数拼接起来

#如果只有一个操作数是字符串,则将另一个操作数转换为字符串,然后将两个字符串拼接起来

如果有一个操作数是对象、数值或布尔值,则调用它们的toString()方法取得相应的字符串值。对于undefined和null,则分别调用String()函数并取得"undefined"和"null".

2.减法(-)

减法与加法类似,需要遵循以下规则:

#如果两个操作数都是数值,则按常规的算术减法运算。

#如果有一个操作数是NaN,则结果是NaN

#如果是Infinity减Infinity,则结果是NaN

#如果是-Infinity减Infinity,则结果是-Infinity

#如果是Infinity减Infinity,则结果是Infinity

#如果是+0减+0,则结果是+0;

#如果是+0减-0,则结果是-0;

#如果是-0减-0,则结果是+0;

#如果有一个操作数是字符串、布尔值、null或undefined,则先在后台调用Number()函数将其转为数值,然后进行减法运算。

#如果有一个操作数是对象,则调用对象的valueOf()方法以取得表示对象的数值。如果对象没有valueOf()方法,则调用toString()方法并将得到的字符串转换为数值。

原文地址:https://www.cnblogs.com/night2013/p/3500777.html