函数对任何语言来说都是一个核心的概念。通过函数可以封装任意多条语句,而且可以在任何地放任何时间调用执行。ECMAScript中的函数使用function关键字来声明,后跟一组参数以及函数体。函数的基本语法如下:
function functionName(arg0,arg1,,,,argN){
statements
}
以下是一个函数示例:
function sayHi(name, message) {
console.log("Hello " + name + "," + message);
}
ECMAScript中的函数在定义时不必指定是否返回值。实际上,任何函数在任何时候可以通过return语句后跟要返回的值来实现返回值。例子:
function sum(num1, num2) {
return num1 + num2;
}
这个函数会在执行完return语句之后停止并立即退出。因此,位于return语句之后的任何代码都永远不会执行。
3.7.1 理解参数
ECMAScript函数的参数与大多数其他语言不同。ECMAScript函数不介意传递进来多少阐述,也不在乎传进来参数是什么类型。之所以这样,因为在ECMAScript中的参数在内部都是用一个数组来表示的。函数接收到的始终都是这个数组,而不关心数组中包含哪些参数。实际上,在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。
其实,arguments对象只是和数组类似(它并不是Array的实例),因为可以使用方括号语法访问它的每一个元素(即第一个元素是arguments[0],第二个元素是arguments[1],以此类推),使用length属性来确定传递进来多少参数。
如果要实现类似于重载的功能,可以使用下面的方法:
function doAdd() {
if (arguments.length == 1) {
console.log(arguments[0] + 10);
} else if (arguments.length == 2) {
console.log(arguments[0] + arguments[1]);
}
}
3.7.2 没有重载
ECMAScript函数不能像传统意义上实现重载。其他语言,可以为一个函数编写两个定义,只要这两个定义的签名(接受的参数的类型和数量)不同即可。
如果要实现重载,可以参考上一章的例子。
网友评论