[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[转载教程] JS基础知识——普通运算符

本帖最后由 wc726842270 于 2011-6-12 21:28 编辑

算术运算符
  就像你知道的,*运算符执行一个乘法运算。JavaScript也按照传统把-运算符用于减法,把/操作符用于除法。
  1.                   %运算符
  2. JavaScript也包含了较少用到的取模运算符%,这个运算符返回相除后的余数:
  3. var a = 5 % 2;
  4. 现在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');
  }
  1.                !==
  2.   也许你已经猜到了,还有一个不等同运算符(!==),它是严格版本的!=运算符。如果两个值拥有不同的数据类型,它们就是不等同的,即使它们都能被解释为拥有相同的值。
  3.   你很少会用到这个操作符。
复制代码
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;
  }
  1.                                三元运算符
  2.   条件运算符偶尔也被称为三元运算符,因为它对3个运算数进行操作,而不是通常的1个或2个。在我看来,这个名字不是很有意义,因为这更强调它的语法,而不是它的用途。
复制代码
条件运算符是JavaScript提供的有用的简写语法之一,我总是使用它来做简单的对比。例如,如果一个元素当前具有display:block,我希望设置它的display为none,或者相反:
  var currentValue = this.relatedTag.style.display;
  var newValue = {currentValue == 'none'} ? 'block' : 'none';
  至此,我们结束了对运算符的初步学习。
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

返回列表