正文
{
return
first + second };
var
multiply =
function
(first, second)
{
return
first * second };
function
calculate
(fun, a, b)
{
return
fun(a, b);
}
首先我已经创建了两个匿名函数。第一个返回两个数的加法运算,第二个返回两个数的乘法运算。相当简单,没有什么可值得炫耀的地方。然后,我定义函数
calculate
,这个函数接受函数作为第一个参数后跟两个参数接受两个数字。
我可以通过传递任意函数作为第一个参数来调用函数calculate。
var sum = calculate(add, 2, 3); var multiplication = calculate(multiply, 2, 3);
你可以看到将函数作为参数传递是多么容易。这种模式在AJAX中大量使用,当你在AJAX调用完成后,传递回调函数处理成功或失败的场景时。
关于参数的更多内容
JavaScript是非常灵活的,当涉及到传递或访问函数参数的时候。让我们看一下函数参数可以被操纵的方式。
缺少参数
调用函数时,函数的参数数量可以比要求的更少或更多。如果你调用的函数的参数比声明的少,那么缺少的参数被设置为undefined。
function callMe(a, b, c) { console.log("c is " + typeof c);
}
callMe("Code", "Morning");
callMe("Learn", "JavaScript", "Functions");
Arguments对象
所有的JavaScript函数有一个特殊的对象,叫做
arguments
,它是在函数调用过程中传递的参数数组。该对象可以被用来访问单个参数或获得传递到函数的参数总数。
function callMe() { var i; for (i = 0; i < arguments.length; i++) { console.log(arguments[i]);
} console.log("Total arguments passed: " + arguments.length);
}
此函数假设没有传递任何参数,但就像我说的,你可以传递任何数量的参数到JavaScript函数。我可以像这样调用这个函数:
callMe("Code", "Morning", "Mr. Programmer");
每个参数可以从
arguments
对象作为一个数组项被访问。被传递给函数的
arguments
的总数可从arguments.length属性获得。