【问题标题】:How to exclude undefined parameters in a closure?如何在闭包中排除未定义的参数?
【发布时间】:2022-01-16 13:13:24
【问题描述】:

closures 上的 JavaScript 练习题如下:

更改函数以支持多个函数调用:

function joinWords(a, b) {
    return console.log(a + ' ' + b);
}

请参阅下面的示例案例,了解示例输入及其预期输出。

输入 1:
const greet = joinWords("Hello");
greet("world);
输出 1:
“你好世界”

输入 2:
const greet = joinWords("Hey", "there!");
greet("Where", "is", "Foo", "Bar?");
输出 2:
“嘿那里!Foo Bar 在哪里?”

对于解决方案,我已经成功实现了一个闭包,但我仍在控制台记录未定义的参数。 AKA,对于第一个测试用例(输入 1 和输出 1),我正在输出 Hello undefined World undefined undefined undefined. 我怎样才能优雅地排除未定义的参数?

function joinWords(a, b) {
    return function(c, d, e, f) {
    console.log(
        a + ' ' + b + ' ' + c + ' ' + d + ' ' + e + ' ' + f
    );
  };
}

【问题讨论】:

    标签: javascript parameters scope closures undefined


    【解决方案1】:

    您可能正在寻找rest parameters,它使函数接受任意数量的参数并将它们作为数组传递(然后可以调用.join 方法):

     function joinWords(...values) {
       return values.join(" ");
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-04
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多