为什么绑定参数没有指向实际的函数参数

时间:2018-11-18 19:00:07

标签: javascript

为什么limit是20而不是el = 20,因为在isFullAge.bind(this,20)中,20是最后一个参数,因此必须传递给'el'参数,但是为什么将其设置为'limit'参数?

var years = [1990, 1965, 1937, 2005, 1998];

    function arrayCalc(arr, fn) {
        var arrRes = [];
        for (var i = 0; i < arr.length; i++) {
            arrRes.push(fn(arr[i]));
        }
        return arrRes;
    }

    function calculateAge(le) {
        return 2016 - le;
    }

    function isFullAge(limit,el)  
     {
        return el >= limit;
    }

    var ages = arrayCalc(years, calculateAge);
    var fullJapan = arrayCalc(ages, isFullAge.bind(this, 20)); // i'm confused here
    console.log(ages);
    console.log(fullJapan);

1 个答案:

答案 0 :(得分:1)

first 参数成为this值。每个后续值从左到右依次映射到参数 。它们不是从头到尾分配的。

20是对this的调用中bind值之后的 first 参数,因此将其分配给limit,因为{{1 }}是 first 参数。

您是否说过:

limit

…然后isFullAge.bind(this, 20, example)) 将被分配给example,因为el是第二个参数,而el将是example值之后的第二个参数。 / p>