ECMAScript中的函数使用functions关键字来声明,后跟一组参数以及函数体。函数的基本语法如下:
function functionName(arg0,arg1,...,argN)
{
statements
}
一下是一个示例:
function sayHi(name,message)
{
alert("hello"+name+","+message);
}
ECMAScript中的函数在定义时不必指定是否返回值。实际上,任何函数在任何时候都可以通过return语句后跟要返回的值来实现返回值。如:
function sum(num1,num2)
{
return num1+num2;
}
函数要么始终都返回一个值,要么永远都不要返回值。否则,如果函数有时候返回值,有时候不返回值,会给调试代码带来不便。严格模式对函数有一些限制:
* 不能把函数命名为eval或arguments;
* 不能把参数命名为eval或arguments;
* 不能出现两个命名参数同名的情况。
如果发生以上情况,就会导致语法错误,代码无法执行。
ECMAScript函数不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型。也就是说,即便你定义的函数只接受两个参数,在调用这个函数时也未必一定要传递两个参数。可以传递一个、三个甚至不传递参数,而解析器永远不会有什么怨言。之所以会这样,原因是ECMAScript中的参数在内部使用一个数组来表示的。函数接收到的始终都是这个数组,而不关心数组中包含哪些参数。实际上,在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。
function sayHi()
{
alert("Hello"+arguments[0]+","+arguments[1];
}
通过访问arguments对象的length属性可以获知有多少个参数传递给了函数。
ECMAScript函数没有重载
如果在ECMAScript中定义了两个名字相同的函数,则改名字只属于后定义的函数。