第三章 基本概念(二)操作符(二)

乘性操作符

  • 在JS里面定义了3个乘性操作符,乘法,除法和求模。这些操作数在非数值的情况下会执行自动的类型转换。
  • 如果参与乘法计算的某个操作数不是数值,后台有优先使用Number()转型函数将其转换为数值。也就是说空字符串将被当做0,布尔true将被当做1

乘法

乘法操作符由一个星号(*)表示,用于计算两个数值的乘积。
例如:

var result = 34*56;

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

  • 如果操作数都是数值,执行常规的乘法计算,即两个正数或者两个负数相乘的结果还是正数,而如果只有一个操作数有符号,那么结果就是负数。如果乘积超过了JS的表示范围则返回Infinity或者-Infinity

除法

除法操作符由一个(/)表示,
例如:

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
减法运算 要都是无穷只是符号不一样的话,看前面,前面正就是正,前面负就是负

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容