JavaScript高阶程序设计第三版笔记-操作符02

布尔操作符

逻辑与(&&)

在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值,规则如下:

  • 如果第一个操作数时对象,则返回第二个操作数
  • 如果第二个操作数时对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象
  • 如果两个操作数都是对象,则返回第二个操作数
  • 如果第一个操作数是null,则返回null
  • 如果第一个操作数是NaN,则返回NaN
  • 如果第一个操作数是underfined,则返回underfined
  • 逻辑与操作属于短路操作,即如果第一个擦偶偶书就能够决定结果,name就不会对第二个操作数求值

逻辑或(||)

如果有一个操作数不是布尔值,规则如下:

  • 如果第一个数是对象,则返回第一个操作数
  • 如果第一个操作数的求值结果为false,则返回第二个操作数
  • 如果两个操作数都是对象,则返回第一个操作数
  • 如果两个操作数都是null,则返回null
  • 如果两个操作数都是NaN,则返回NaN
  • 如果两个操作数都是underfined,则返回underfined

逻辑或为短路操作,即如果第一个操作数为true,则不会对第二个操作数求值

乘性操作符

乘法

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

  • 如果操作数都是数值,执行常规的乘法计算,正正为正,负负为正,一个有符号一个无符号,则结果为负,若超过了ECMASctipt数值的表示范围,则返回Indinity或-Infinity
  • 如果有一个操作数是NaN,则结果是NaN
  • 如果是Infinity与0相乘,则结果为NaN
  • 如果是Infinity与非0 数值相乘,则结果是Infinity或-Infinity,取决于有符号操作数的符号
  • 如果是Infinity与Infinity相乘,则结果是Infinity
  • 如果有一个操作数不是数值,则在后台调用Number()将其转为数值,然后再应用上面的规则

除法

对特殊值的处理规则:

  • 如果都是数值,按常规的方法进行计算;正正为正,负负为正,一个有符号一个无符号,则结果为负,若超过了ECMASctipt数值的表示范围,则返回Indinity或-Infinity
  • 如果有一个操作数是NaN,则结果是NaN
  • 如果是Infinity与Infinity相除,则结果是NaN
  • 如果是零被零除,则结果是NaN
  • 如果是非零的有限数被零除,则结果是Infinity或-Infinity,取决于有符号操作数的符号
  • 如果是Infinity被任何非零数值除,则结果是Infinity或-Infinity,取决于有符号操作数的符号
  • 如果有一个操作数不是数值,则在后台调用Number()将其转换为数值,然后再应用上面的规则

求摸(%)

特殊值规则如下:

  • 如果操作数都是数值。执行常规的除法计算,返回除得的余数
  • 如果被除数是无穷大值而除数是有限大的数值,则结果是NaN
  • 如果被除数是有限大值而除数是无限大值,则返回NaN
  • 如果是Infinity除以Infinity,则返回值是NaN
  • 如果被除数是有限大的数值,而除数无穷大的数值,则返回值结果是被除数
  • 如果被除数是0,则结果是0
  • 如果有一个操作数不是数值,则先调用Number()方法将其转换为数值,然后在进行上面的规则

加性操作符

加法(+)

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

  • 如果两个操作数都是字符串,则进行字符串的拼接
  • 如果只有一个操作数是字符串,则将另一个操作数转换为字符串,然后再将两个字符串进行拼接
  • 如果有一个操作数是对象、布尔值、数值,则调用他们的toString()方法取得相应的字符串值,然后再应用前面的规则

var result1=5 + 5;    alert(result1)  ;  //10

var result2=5 + “5”;  alert(result2);  // "55"

var num1=5;    var num2=10;   var message1="The sum of 5 and 10 is "+ num1 + num2;   

alert(message1);   //“The sum of 5 and 10 is 510”

var message2="The sum of 5 and 10 is "+( num1 + num2);

alert(message2);    //"The sum of 5 and 10 is 15"

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值