本帖最后由 wc726842270 于 2011-6-10 04:43 编辑
5.1 运算符
大多数语句至少包含一个运算符,这个字符确切的告诉JavaScript应该执行哪个运算。看这段代码
a b;
尽管你可能定义了变量a和b,但这个伪语句(pseudo-statement)没告诉JavaScript该怎么操作它们,于是产生一个错误。
相反,你应该给出清楚的指令:
var c = a * b;
这个语句包含了两个运算符:*运算符执行a乘以b,而=运算符将相乘后的结果赋值给c。
通常,你不必但心运算符。总的来说,你一旦知道它们的含义,就能凭直觉正确地使用它们。最与众不同的是+运算符,以后我们将讨论。
5.2 运算数
一个运算符需要运算数的值来完成运算。比如a*b,*运算符指示进行一个乘法运算。我们拿什么来相乘?是用a和b的数值。*运算符是使用a和b来运算的,因此a和b就是*的运算数。大多数运算符需要两个运算数。
运算符优先级
看这条语句。
var a = x - y * z;
哪个运算符的操作先被执行呢?-还是*?如果你记得学过的数学,就会知道乘法优先于减法。用技术术语描述就是,乘法运算符比减法运算符具有更高的优先级。
因此,这条语句先将y乘以z,然后再从x中减去它们相乘后的结果。最终运算的结果保存到a中。如果你想首先进行减法运算,可以使用括号,就像在一般的数学运算中一样:
var a = (x - y) * z;
这会先从x中减去y,然后将结果乘以Z,并将最终结果保存到a中。
注意这里的=运算符具有较低的优先级,只有当所有的运算符都求完成后它才执行。那也是为什么最终结果赋值给a的操作发生在最后的原因。- =的返回值
- =运算符的返回值有一点整蛊的,看这个操作:
- var a=1;
- 事实上它做了两件事:
- (1)把1赋值给变量a
- (2)一旦第一步完成,它返回这个同样的值1给下一个运算符(如果有的话),就好像前一个例子中的*运算符把相乘后的结果值返回给=运算符那样。
- 通常在赋值语句中是没有其他运算符的,但偶尔你想要将同一个值赋给好几个变量:
- var a=b=1;
- 首先JavaScript将1赋值给b,然后它取得=运算符的返回值,它还是1,然后再将它赋给a(在此说一下本人的理解,JS不同于VBS它是相对来说比较严紧的,JS的起初打算也是应用于HTML中,所以理解好交互还是有必要的,这里的a,b没有什么联系,只不过是将它们赋一个相同的值而以,所以不要将a和b联系起来,关于=号以后会有讲解的,反正我是看见了,一定要正确理解)
复制代码 5.3 返回值
每个运算符都返回一个值,这个值就是你想要对其进行某种操作的东西:
var c = a * b;
如果我们用a乘以b,该运算返回相乘后的结果。=运算符取得了这个返回值,并对它执行了自已的运算,即把该值保存到c中。
值
取得并使用值是所有程序设计中的要点。所以,我们必须更深入地来看看值。看这行代码:
var a = b * 4;
4是一个值。b是一个包含了一个值(比如3)的变量。如果我们将4乘以b就会得到另一个值即12,它赋给了变量a,这是值操作的简单例子。
作为值的函数
现在让我们看一个更复杂的例子:
var test = function () {
alert('Hello world!');
}
var otherTest = test;
otherTest();
在JavaScript中,函数和其他值没有根本区别,在这个例子中,变量test指向一个函数的引用。当test的值被赋给otherTest,otherTest就成为那个执行时会弹出Hello world!警告提示框的函数。
将函数当作值 来处理,在事什处理中应用得非常普遍。
5.4 变量与字面量
一个值通常表示为一个变量或者一个字面量。其区别很简单:
var a = 10;
var b = a * 4;
在这个代码例子中,a和b是变量,这意味着它们可能包含任意值,不过当前它们的值分别是10和40。
10和4是字面量:它们按字面意思就意味着10和4,并不会表示其他任何值。(不管a和b被赋为什么值,它们的本质依然是变量,不要因为a被赋为10就认为是字面量,不过以上是个人的理解) |