JavaScript高级程序设计学习总结三(4)

乘性操作符

有三种乘性操作符,乘法,除法和求模。

在操作数为非数值的情况下会执行自动类型转换,调用Number()转型函数将其转为数值。

1.乘法(*)

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

var result = 36 * 24;   //结果为864

特殊的规则:

  • 操作数都是数值,执行常规的乘法计算。乘积超过ECMAScript数值的范围,则返回Infinity或-Infinity;
  • 操作数是NaN,返回NaN;
  • Infinity与0相乘,返回NaN;
  • Infinity与非0数值相乘,返回Infinity或-Infinity。
  • Infinity与Infinity相乘,返回Infinity;
  • 有一个操作数不是数值,自动调用Number()转换为数值相乘;

2.除法(/)

除法操作数由一个符号(/)表示,用于计算两个数值相除的商。

var result = 66 / 11;  //结果为6

特殊规则:

  • 操作数都是数值,执行常规的除法计算。商超过ECMAScript数值的范围,则返回Infinity或-Infinity;
  • 操作数是NaN,返回NaN;
  • Infinity被Infinity除,返回NaN;
  • 零被零除,返回NaN;
  • 非零的有限数被零除,返回Infinity或-Infinity;
  • Infinity被任何非零数值除,返回Infinity或-Infinity;
  • 有一个操作数不是数值,自动调用Number()转换为数值相除;

加性操作符

1.加法

加法操作符(+)的用法如下所示:

var result = 1 + 2;  //结果为3

特殊规则:

  • 有一个操作数是NaN,则结果是NaN;
  • Infinity加Infinity,则结果是Infinity;
  • -Infinity加-Infinity,则结果是-Infinity;
  • Infinity加-Infinity,则结果是NaN;
  • +0加+0,则结果是+0;
  • -0加-0,则结果是-0;
  • +0加-0,则结果是+0;
  • 两个操作数都是字符串,则将第二个操作数与第一个操作数拼接起来;
  • 只有一个操作数是字符串,则将另一个操作室转换为字符串,然后再将两个字符串拼接起来;
  • 有一个操作数是对象、数值或布尔值,则调用它们的toString()方法取得相应的字符串值,再拼接。

2.减法

减法操作符(-)的用法如下所示:

var result = 2 - 1;  //结果为1

特殊规则:

  • 有一个操作数是NaN,则结果是NaN;
  • Infinity减Infinity,则结果是NaN;
  • -Infinity减-Infinity,则结果是NaN;
  • Infinity减-Infinity,则结果是Infinity;
  • -Infinity减Infinity,则结果是-Infinity;
  • +0减+0,则结果是+0;
  • -0减-0,则结果是+0;
  • -0减0,则结果是-0;
  • +0减-0,则结果是+0;
  • 有一个操作数是String、boolean、null或Undefind,则自动调用它们的Number()方法取得相应的字符串值,再执行减法计算,如果转换为NaN,则结果为NaN。
  • 有一个操作数是对象,则调用对象的valueOf()方法以取得表示该对象的数值。如果得到的是NaN,则结果就是NaN。如果对象没用valueOf()方法,则调用其toString()方法并将得到的字符串转换为数值。

关系操作符

小于(<)、大于(>)、小于等于(<=)、大于等于(>=)

相应的规则:

  • 如果两个操作数都是数值,则执行数值比较。
  • 如果两个操作数都是字符串,则比较两个字符串对应的字符编码值。
  • 如果一个操作数是数值,则将另一个操作数转换为一个数值,然后执行数值比较。
  • 如果一个操作数是对象,则调用这个对象的valueOf()方法,用得到的结果按照前面的规则执行比较;如果对象没有valueOf()方法,则调用toString()方法,并得到的结果根据前面的规则执行比较。
  • 如果一个操作数是布尔值,则先将其转换为数值,然后再执行比较。
  • 相等操作符
  • 相等和不相等——先转换再比较
  • 全等和不全等——仅比较而不转换

1.相等和不相等

相等操作符由两个等号(==)表示。如果两个操作数相等,则返回true。

不相等操作符由(!=)表示。如果两个操作数不相等,则返回true。

这个两个操作符都会先转换操作数(通常称为强制转型),然后再比较它们的相等性。

它们有以下规则:

  • 如果有一个操作数是布尔值,则比较相等性之前先将其转换为数值——false转换为0,而true转换为1;
  • 如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前将字符串转换为数值;
  • 如果一个数是对象,另一个操作数不是,则调用对象的valueOf()方法,得到的基本类型值按照前面的规则进行比较。
  • null和undefined是相等的
  • 比较相等性之前,不能将null和undefined转换成其他任何值。
  • 如果有一个操作数是NaN,则(==)返回false,而(!=)返回true。NaN不等于NaN;
  • 如果两个操作数都是对象,则比较它们是不是同一个对象。 如果两个操作数都指向同一个对象,则(==)返回true;否则false。

还有一些特殊情况及比较结果:

表达式
null == undefinedtrue
"NaN" == NaNfalse
5 == NaNfalse
NaN == NaNfalse
NaN != NaNtrue
false == 0true
true == 1true
true == 2false
undefined == 0false
null == 0false
"5" == 5true

 

2.全等和不全等

全等操作符由3个等号(===)表示,它只在两个操作数未经过转换就相等的情况下返回true。

不全相等操作符由(!==)表示,它在两个操作数未经过转换就不相等的情况下返回true。

null == undefined   返回的是true,它们是类似的值;

null === undefined  返回的是false,它们是不同的类型的值。

三元运算符

a ? b :c;

判断a的boolean值,true就返回b,false返回c。

赋值操作符

简单的赋值操作符由等号(=)表示。

作用把(=) 右边赋值给(=)左边的变量。

复合赋值操作符

  • 乘/赋值(*=);
  • 除/赋值(/=);
  • 模/辅助(%=);
  • 加/赋值(+=);
  • 减赋值(-=);
  • 左移/赋值(<<=);
  • 有符号右移/赋值(>>=);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值