运算符有六种:赋值运算符,算数运算符,比较运算符,逻辑运算符,条件运算符和特殊的+运算符。运算符之间有优先级之分(比如*,/的优先级高于+,-。相同的优先级时按照从左到右计算等)。不确定运算符优先级时多使用圆括号把运算括起来,这样不易出错而且含义清晰。
4.1 赋值运算符
有=,+=,-=,*=,/=,%=六种。
给定 x=10 和 y=5,下面的表格解释了赋值运算符:
运算符 | 例子 | 等价于 | 结果 |
= | x=y |
| x=5 |
+= | x+=y | x=x+y | x=15 |
-= | x-=y | x=x-y | x=5 |
*= | x*=y | x=x*y | x=50 |
/= | x/=y | x=x/y | x=2 |
%= | x%=y | x=x%y | x=0 |
4.2 算数运算符
有+,-,*,/,%,++,--七种。
给定 y=5,下面的表格解释了这些算术运算符:
运算符 | 描述 | 例子 | 结果 |
+ | 加 | x=y+2 | x=7 |
- | 减 | x=y-2 | x=3 |
* | 乘 | x=y*2 | x=10 |
/ | 除 | x=y/2 | x=2.5 |
% | 求余数 (保留整数) | x=y%2 | x=1 |
++ | 累加 | x=++y | x=6 |
-- | 递减 | x=--y | x=4 |
自加(++)和自减运算符可以放在变量前面也可以放到后面。放到前面则变量做完加1之后再使用,放到后面则是变量先使用后加1.如上例中x=y++则x=5,x=y—则x=5。
4.3 比较运算符
比较运算符有七个。它们一般在条件判断语句中使用,是左操作数与右操作数之间的比较,返回值为Boolean类型。
假设 x=5,下面的表格解释了比较运算符:
运算符 | 描述 | 例子 |
== | 等于 | x==8 为 false,x==”5”为true |
=== | 全等(值和类型) | x===5 为 true,x==="5" 为 false |
!= | 不等于 | x!=8 为 true |
> | 大于 | x>8 为 false |
< | 小于 | x<8 为 true |
>= | 大于或等于 | x>=8 为 false |
<= | 小于或等于 | x<=8 为 true |
比较运算符中==,===和!=的优先级最低,其他(<,>,<=,>=)具有相同的优先加。所有比较运算符的优先级都比算数运算符(+,-,*,/)要低。
字符串也同样可以使用比较运算符,它的比较是按照字母顺序进行比较,出现结果立刻停止比较。比如"aB"<"Ba",因为在字符集中小写字母的编码值比大写字母大,所以a比B大因此表达式结果为false。同样"B"<"A"结果也为false因为A在B的前面。比较字符串时注意它是区分大小写的,所以”ann”==”Ann”的结果为false。
4.4 逻辑运算符
逻辑运算符的左右操作数都是Boolean类型,而返回值也是Boolean类型。
给定 x=6 以及 y=3,下表解释了逻辑运算符:
运算符 | 描述 | 例子 |
&& | and | (x < 10 && y > 1) 为 true |
|| | or | (x==5 || y==5) 为 false |
! | not | !(x==y) 为 true |
注意:JavaScript并不会做无用功,在使用&&和||时,如果左操作数的值能够确定结果,右操作数的值无所谓时,JavaScript将会放弃对右操作数的操作。比如下例:
var testd=Number(1);
alert(testd>0||testd++>0);
alert(testd);
将依次弹出true和1两个对话框。由于testd>0已经为true,所以之后的testd++>0并没有运行。如果||改成&&,则之后代码会运行,弹出true和2两个对话框。
4.5 条件运算符
它可以基于某些条件来对变量进行赋值。语法如下:
var vriable=(condition)?value1:value2。
例如:
var value=(a==1)?1:0;
value值为1如果变量a的值为1的话,否则value值为0。
4.6 特殊的+运算符
+ 运算符可以用于把文本值或字符串变量加起来(连接起来),例如:
str1=”good”;str2=”morning”;str3=str1+””+str2;
结果str3为”good morning”。也可以用于把字符串和数字连接起来,例如:
str1= “3”;num2=2;str2=str1+num2;
结果str2为”32”字符串。