作为值的函数
因为ECMAScript 中的函数名本身就是变量,所以函数也可以作为值来使用。
把一个函数传递给另一个函数:
javascript
function add10(num) {
return num + 10;
}
var result1 = callSomeFunction(add10, 10);
alert(result1); //20
从一个函数中返回另一个函数,例如,假设有一个对象数组,我们想要根据某个对象属性对数组进行排序。而传递给数组sort()方法的比较函数要接收两个参数,即要比较的值。可是,我们需要一种方式来指明按照哪个属性来排序。要解决这个问题,可以定义一个函数,它接收一个属性名,然后根据这个属性名来创建一个比较函数:
javascript
function createComparisonFunction(propertyName) {
return function (object1, object2) {
var value1 = object1[propertyName];
var value2 = object2[propertyName];
if (value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
};
}