为什么会这样呢?

时间:2018-12-19 18:48:21

标签: javascript

运行此命令时,其打印不确定。在进行ret.push(func(arr[i]))时是否具有上下文权限?

        function print(arr,func){
             var ret =[]
             for(let i =0 ;i<arr.length;i++){
                  ret.push(func(arr[i]))
                 }
             return ret;
        }
        var numbers = [1,2,3,4,5];
        console.log(print(numbers,(x)=>{x+1}));

它打印[undefined,undefined,undefined,undefined,undefined]。

1 个答案:

答案 0 :(得分:3)

您可以使用return语句并获取新值。

function print(arr, func) {
    var ret = [];
    for (let i = 0; i < arr.length; i++) {
        ret.push(func(arr[i]));
    }
    return ret;
}

var numbers = [1, 2, 3, 4, 5];

console.log(print(numbers, (x) => { return x + 1; }));
//                                  ^^^^^^

// or take a simplified lambda with implicit return (kudos paul!)
console.log(print(numbers, x => x + 1));