5.1 算术运算符
加法运算符
加法运算符由加号(+)表示:
ECMAScript中的加法也有一些特殊行为:
某个运算数是NaN,那么结果为NaN。
字符串拼接
如果两个运算数都是字符串,把第二个字符串连接到第一个上。
如果只有一个运算数是字符串,把另一个运算数转换成字符串,结果是两个字符串连接成的字符串。
例如:
varresult = 5 + 5;//两个数字
alert(result);//输出"10"
varresult2 = 5 + "5";//一个数字和一个字符串
alert(result);//输出"55"
注意:
vara=5;
varb=true;
alert(a+b);
//6
注意:变量是布尔类型的时候,true=1, false=0;
vara=5;
varb=false;
alert(a+b);//5
减法运算符
乘法运算符
乘法运算符由星号(*)表示,用于两数相乘。
ECMAScript中的乘法语法与Java语言中的相同:
注释:如果运算数是数字,那么执行常规的乘法运算,即两个正数或两个负数为正数,两个运算数符号不同,结果为负数。
除法运算符
除法运算符由斜杠(/)表示,用第二个运算数除第一个运算数:
variResult = 88 /11;
注意:
vara=10;
varb=3;
alert(a/ b); //3.3333333333333335
5.2 比较运算符
比较运算符小于、大于、小于等于和大于等于执行的是两个数的比较运算
varbResult1 = 2 > 1//true
varbResult2 = 2 < 1//false
比较数字和字符串
varbResult = "25" < "3";
alert(bResult);//输出"true"
上面这段代码比较的是字符串"25"和"3"。两个字符串在比较的时候比较的是两个字符串对应的字符顺序.
注意:如果字符串与比较,会把字符串转成数字再进行比较。
如果把某个运算数改为数字,那么结果就不一样了:
var bResult = "25" < 3;
alert(bResult);//输出"false"
这里,字符串"25"将被转换成数字25,然后与数字3进行比较,结果不出所料。
无论何时比较一个数字和一个字符串,ECMAScript都会把字符串转换成数字,然后按照数字顺序比较它们。
5.3 .逻辑运算符
&&与
||或
!非
逻辑AND运算符
在ECMAScript中,逻辑AND运算符用双和号(&&)表示:
var bTrue = true;
var bFalse = false;
var bResult = bTrue && bFalse;
与Java中的逻辑AND运算相似,ECMAScript中的逻辑AND运算也是简便运算,即如果第一个运算数决定了结果,就不再计算第二个运算数。对于逻辑AND运算来说,如果第一个运算数是false,那么无论第二个运算数的值是什么,结果都不可能等于true。
考虑下面的例子:
var bTrue = true;
var bResult = (bTrue && bUnknown); //发生错误
alert(bResult);//这一行不会执行
这段代码在进行逻辑AND运算时将引发错误,因为变量bUnknown是未定义的。变量bTrue的值为true,因为逻辑AND运算将继续计算变量bUnknown。这样做就会引发错误,因为bUnknown的值是undefined,不能用于逻辑AND运算。
逻辑OR运算符
ECMAScript中的逻辑OR运算符与Java中的相同,都由双竖线(||)表示
var bTrue = true;
var bFalse = false;
var bResult = bTrue || bFalse;
下面的真值表描述了逻辑OR运算符的行为:
与逻辑AND运算符一样,逻辑OR运算也是简便运算。对于逻辑OR运算符来说,如果第一个运算数值为true,就不再计算第二个运算数。
逻辑运算符NOT。
在ECMAScript中,逻辑NOT运算符与Java中的逻辑NOT运算符相同,都由感叹号(!)表示。
通常,该运算符用于控制循环:
var bFound = false;
var i = 0;
while (!bFound) {
if (aValue[i] == vSearchValues) {
bFound = true;
} else {
i++;
}
}
5.4.赋值运算符
简单的赋值运算符由等号(=)实现,只是把等号右边的值赋予等号左边的变量。
例如:
var iNum= 10;
复合赋值运算是由乘性运算符、加性运算符或位移运算符加等号(=)实现的。这些赋值运算符是下列这些常见情况的缩写形式:
var iNum= 10;
iNum =
iNum + 10;
可以用一个复合赋值运算符改写第二行代码:
var iNum= 10;
iNum +=
10;
每种主要的算术运算以及其他几个运算都有复合赋值运算符:
乘法/赋值(*=)
除法/赋值(/=)
取模/赋值(%=)
加法/赋值(+=)
减法/赋值(-=)
5.5.三目
运算符是ECMAScript中功能最多的运算符,它的形式与Java中的相同。
variable= boolean_expression ? true_value : false_value;
该表达式主要是根据boolean_expression的计算结果有条件地为变量赋值。如果Boolean_expression为true,就把true_value赋给变量;如果它是false,就把false_value赋给变量。
例如:
var iMax= (iNum1 > iNum2) ? iNum1 : iNum2;
在这里例子中,iMax将被赋予数字中的最大值。表达式声明如果iNum1大于iNum2,则把iNum1赋予iMax。但如果表达式为false(即iNum2大于或等于iNum1),则把iNum2赋予iMax。