【问题标题】:Why is it behaving this way? [duplicate]为什么会这样? [复制]
【发布时间】:2019-05-20 07:31:04
【问题描述】:

当运行它时,它的打印未定义。在执行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]。

【问题讨论】:

  • 看起来func 没有返回任何内容..?
  • 你的箭头函数没有返回任何东西。
  • 你没有从func()返回任何东西

标签: javascript


【解决方案1】:

您可以使用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));

【讨论】:

  • 请注意,如果您删除花括号,您还将获得隐式返回:x =&gt; x + 1
  • 是的,它应该没有花括号。谢谢你提醒。 @保罗。如此微小的细节会产生很大的不同。这就是我喜欢 JavaScript 的原因:D
猜你喜欢
  • 2015-12-23
  • 1970-01-01
  • 1970-01-01
  • 2020-01-19
  • 2021-02-20
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
相关资源
最近更新 更多