操作符
- 递增和递减操作符 ++ --
- 一元加和减操作符 + -
- 位操作符 ~ & | ^ << >> >>>
- 布尔操作符 ! && ||
- 乘性操作符 * / %
- 关系操作符 小于(<)、大于(>)、小于等于(<=)和大于等于(>=)
- 相等操作符 == ===
- 条件操作符 variable = boolean_expression ? true_value : false_value;
- 赋值操作符 =
- 逗号操作符 var num1=1, num2=2, num3=3;
语句
- if语句
- do-while语句
- while语句
- for语句
- for-in语句
- label语句(使用label 语句可以在代码中添加标签,以便将来使用)
- break和continue语句
- with语句
- switch语句
函数
ECMAScript 中的函数使用function 关键字来声明,后跟一组参数以及函数体。
函数的基本语法如下所示:
function functionName(arg0, arg1,...,argN) {
statements
}
理解参数
ECMAScript 函数的参数与大多数其他语言中函数的参数有所不同。ECMAScript 函数不介意传递进
来多少个参数,也不在乎传进来参数是什么数据类型。也就是说,即便你定义的函数只接收两个参数,
在调用这个函数时也未必一定要传递两个参数。可以传递一个、三个甚至不传递参数,而解析器永远不
会有什么怨言。之所以会这样,原因是ECMAScript 中的参数在内部是用一个数组来表示的。函数接收
到的始终都是这个数组,而不关心数组中包含哪些参数(如果有参数的话)。如果这个数组中不包含任
何元素,无所谓;如果包含多个元素,也没有问题。实际上,在函数体内可以通过arguments 对象来
访问这个参数数组,从而获取传递给函数的每一个参数。
其实,arguments 对象只是与数组类似(它并不是Array 的实例),因为可以使用方括号语法访
问它的每一个元素(即第一个元素是arguments[0],第二个元素是argumetns[1],以此类推),使
用length 属性来确定传递进来多少个参数。在前面的例子中,sayHi()函数的第一个参数的名字叫
name,而该参数的值也可以通过访问arguments[0]来获取。因此,那个函数也可以像下面这样重写,
即不显式地使用命名参数:
function sayHi() {
alert("Hello " + arguments[0] + "," + arguments[1]);
}
没有重载
ECMAScript 函数不能像传统意义上那样实现重载。而在其他语言(如Java)中,可以为一个函数
编写两个定义,只要这两个定义的签名(接受的参数的类型和数量)不同即可。如前所述,ECMAScirpt
函数没有签名,因为其参数是由包含零或多个值的数组来表示的。而没有函数签名,真正的重载是不可
能做到的。