函数
函数的定义
函数本质上是自变量和因变量之间关系的一种抽象描述,在JavaScript中我们这样定义一个函数:
function add(a,b){ return a + b; }
上述add函数的定义如下:
- function指出这是一个函数定义;
- add是函数的名称;
- (a,b)括号内列出函数的参数,多个参数以,分隔;
- { ... }之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句。
请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。 如果没有return语句,函数执行完毕后也会返回结果,只是结果为undefined。
还有另外一种定义函数的方式:
var add = function(a,b){ return a + b; }
上述代码所示,function(){...}函数是一个匿名函数。将一个匿名函数赋值给一个变量,我们就可以使用它对函数进行调用。两种定义函数的方法是 等价的。
arguments
在函数体的内部,我们可以通过一个内置的arguments关键字查看函数被调用时的所有参数。
function getArgs(a,b){ //只有a,b接收到了参数 console.log(a,b); for (let arg of arguments){ console.log("arg:",arg); } } getArgs(2,4,6); //参数a等于2,参数b等于4,arguments 包含2,4,6 getArgs(2); //参数a等于2,参数b等于undefined,arguments 只有2
可变参数
如果函数接收的参数列表长度是不确定的,我们可以引入一个可变参数接收,方便对参数的操作
function getVarArgs(a,b,...rest){ console.log(a,b); if (rest){ for (let item of rest){ console.log(item) } } } getVarArgs(11,14); getVarArgs(11,14,17,18);
上述代码所示,如果a,b参数是确定的,而后续的参数是不确定的,就可以用...rest的可变参数进行接收。在函数体内部rest可以看成是一个数组, 操作非常方便。
本节重点:
- 什么是函数,函数如何定义;
- 函数体的arguments属性、可变参数的使用。