标题: [转载教程] JS基础知识——普通运算符 [打印本页]
作者: wc726842270 时间: 2011-6-12 21:19 标题: JS基础知识——普通运算符
本帖最后由 wc726842270 于 2011-6-12 21:28 编辑
算术运算符
就像你知道的,*运算符执行一个乘法运算。JavaScript也按照传统把-运算符用于减法,把/操作符用于除法。- %运算符
- JavaScript也包含了较少用到的取模运算符%,这个运算符返回相除后的余数:
- var a = 5 % 2;
- 现在a的值是1,因为5以2取模余1,即在你用5除以2后,还剩下1。
复制代码
JavaScript为所有运算符提供了一个优雅的简写:
c = c * a;
c *= a;
以上两个语句都是用c乘以a,然后把结果再赋值给c,但是第二个写法更简洁,并且应用广泛得多。
当然,+=,-=和/=也存在。它们做的是相同的事情:先取得左边的变量值,接着加上,减去或除以右边的值,然后把结果赋值给左边的变量。
最后介绍的是,一元的取反运算,它简单地表示使这个数字变为负数。
var a = -3;
现在a的值就是-3。
++和--
JavaScript提供了一种简洁的写法来加1或减1:++和--运算符。这些运算符在for循环中会经常用到。
c++;
++c;
这些语句做的是同样的事情:它们给c加1。但是这两者之间又有些微妙的区别。如果你把++放在变量名之前,该变量先被增值(被加1),然后新值传递给下一个运算符。如果++放在变量名字之后,变量的原值被传递给了下一个运算符,然后才被加1。
看这个例子:
var c = d = 1;
var a = c++;
var b = ++d;
最初c和d都是1,++运算符使得两者的值增加到2。但是a的值是1,b的值却是2。
var a = c++意味着“将c的(原)值赋给a,然后c被加1”。
var b = ++d意味着“先将d加1,然后把新值赋给b”。
--运算符的工作原理相同,但是它是减小变量的值:它减去1。
在99%的时间里,你凭直觉就可以正确地使用++和--运算符。而在乘下1%的时间中,c++的微妙不同将给你带来一些麻烦。
=,==和===
=运算(在所有代码实例中都被大量使用)意味着赋值,并仅仅意味着赋值。以下就是一个赋值语句:
var x = y * 2;
JavaScript将y乘以2,然后把结果赋值给变量x。你也可以将相同的值同时赋给好几个变量。
var a = b = c = 1;
现在a,b,c都等于数值1。那是因为=运算符返回的是它刚被赋予的那个值。c=1是最先被执行的。然后将返回值(1)赋给b,之后又将这个操作的返回值(依然是1)赋给a.
=并不意味着比较。如果你想比较两个值,必需使用相等运算符:
if (x == 4) {
// 做点儿什么
}
这条语句是正确的比较运算。if (x == 4)意味着“如果x等于4”。如果x确实等于4,在花括号中的代码块就会被执行。反之,它就不会被执行。==运算符总是返回布尔值true(值相等)或者false(值不相等)。
这么写就是错的:
if (x = 4) {
// 做点儿什么
}
这不是一个比较。这条语句x=4没有返回一个布尔值,而只不过是把值赋给了x(在这个例子中是4)。所以它被解释为这样:
if (4) {
// 做点儿什么
}
就像以前看到的,除了0或NaN之外的任何数字都被换成布尔值,因此if语句将总是被执行。
再次提醒,你可能要经过一番惨痛的经历才会牢记=和==之间的重要区别。
===运算符看起来很像前面的两个运算符,但是它是等同运算符,是相等运算符中最严格的一个版本。它不仅要求两个运算数拥有相同的值,还要求它们是相同的数据据类型。
以这段代码为例:
var x = 4;
var y = '4';
if (x == y) {
alert('x and y are equal');
}
if (x === y) {
alert('x and y are identical');
}
x是数字4,y是一个只包含字符‘4’的字符串。JavaScript对这个区别很不严格,必要时就将字符串‘4’解释为数字4。因此x==y值为true,x等于y,因为它们都可解释为数字4(或者字符4,看当时的情况)。
而x===y值为false,因为===运算符要求相比较的数值拥有相同的数据类型。在这个例子中,它们并不相同:x是一个数字,而y是一个字符串。因此x不等同于y。
在实际中,你并不需要===运算符,在普通的脚本中很少需要比较数据类型。如果你意外地键入=太多次,可能就会发难以预料的事情。
!=,<,>,<=和>=
有时候你想知道一个值是否不等于另一个。这时你就需要不等运算符:
if (x != 4) {
// 做点什么
}
如果x不等于4就执行某些操作。
JavaScript也有小于,大于,小于等于和大于等于操作符。它们都返回一个布尔值:即比较的结果是成立还是不成立。
if (x < 4) {
alert('x is is less than 4');
}
if (x > 4) {
alert('x is greater than 4');
}- !==
- 也许你已经猜到了,还有一个不等同运算符(!==),它是严格版本的!=运算符。如果两个值拥有不同的数据类型,它们就是不等同的,即使它们都能被解释为拥有相同的值。
- 你很少会用到这个操作符。
复制代码
if (x <= 4) {
alert('x is less than or equal to 4');
}
if (x >= 4) {
alert('x is greater than or equal to 4');
}
如果两个运算数都可以被解释为数字,这两个值就进行数字上的比较:
var x = '100';
var y = '1000';
if (x < y) {
alert('100 is less than 1000');
}
尽管x和y都是字符串,但它们都可以被解释为数字,因此JavaScript把它们当作数字来比较。
如果运算数之一不能被解释为数字,就按照字母顺序比较。看这个例子;
var a = 'apple';
var b = 'window';
if (a > b) {
alert('apples are greater than windows');
}
else {
alert('windows are greater than apples');
}
JavaScirpt认为windows比apples大,因为字符串window按标准的字母顺序排在字符串apple之后。
注意,大写字母总是“小于”小写字母:
var a = 'apple';
var b = 'window';
if (a > b) {
alert('apples are greater than Windows');
}
else {
alert('Windows are greater than apples');
}
apples现在比Windows大了,因为字符串Window按字母顺序排在apple之前。
条件运算符?:
条件运算符与众不同,因为它同时处理3个值,而其他所有的运算符都中对1个或2个值进行运算。它执行一个比对,并基于比对的结果把两个值中的一个赋值给一个变量。例如:
var a = (b == 0) ? : 1;
这意味着“如果b等于0,把0赋给a;否则,将1赋给a”。当然,下面的代参码也会给出相同的结果。
var a;
if (b == 0) {
a = 0;
}
else {
a = 1;
}- 三元运算符
- 条件运算符偶尔也被称为三元运算符,因为它对3个运算数进行操作,而不是通常的1个或2个。在我看来,这个名字不是很有意义,因为这更强调它的语法,而不是它的用途。
复制代码
条件运算符是JavaScript提供的有用的简写语法之一,我总是使用它来做简单的对比。例如,如果一个元素当前具有display:block,我希望设置它的display为none,或者相反:
var currentValue = this.relatedTag.style.display;
var newValue = {currentValue == 'none'} ? 'block' : 'none';
至此,我们结束了对运算符的初步学习。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |