JavaScript如何理解函数可以作为值

函数作为值

因为 ES 中的函数名本身就是变量,所以函数也可以作为值来使用。也就是说,不仅可以像传递参数一样把一个函数传递给另一个函数,也可以将函数作为另一个函数的结果返回。

理解上面的这段话是很有必要的,这两种方式都可以让我们更有效的解决一些特定的问题。

1. 函数作为参数
// 可以用来调用一个函数并给它传递一个参数,来获得第一个返回值。
function callSomeFunction(someFunction, someArgument){
    return someFunction(someArgument);
}

function add(num) {
    return num + 10;
}
function get(str) {
    return "hello," + str; 
}

var result = callSomeFunction(add, 20);
var string = callSomeFunction(get, "talon");
alert(result);  // 30
alert(string);  // hello,talon
2. 函数作为返回值

将函数作为返回值也是非常有用的,比如我们在使用 sort ( ) 方法来按照对象的某个属性排序时,要给 sort ( ) 传递的参数函数就有很多种,而使用将函数作为返回值的方法就可以解决这个问题。

function createComparisonFunction(propertyName) {

    return function(obj1, obj2) {
        var value1 = obj1[propertyName];
        var value2 = obj2[propertyName];
        if(value1 < value2) {
            return -1;
        } else if (value1 > value2) {
            return 1;
        } else {
            return 0;
        }
    };
}

var data = [
    {name: "talon", age: 20},
    {name: "zjaya", age: 19}
];

// 按 name 属性排序
data.sort(createComparisonFunction("name"));
alert(data[0].name) // talon
// 按 age 属性排序
data.sort(createComparisonFunction("age"));
alert(data[0].name) // zjaya
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值