如何在闭包中排除未定义的参数?

Posted

技术标签:

【中文标题】如何在闭包中排除未定义的参数?【英文标题】: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
    );
  ;

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于如何在闭包中排除未定义的参数?的主要内容,如果未能解决你的问题,请参考以下文章

Lodash 在尝试使用未定义的属性进行过滤时排除项目

Lumen 5.3 未定义变量:闭包

如何在此 onclick 函数中成功传递参数?未捕获的 ReferenceError:未定义 B081517B [重复]

如何在google助手的上下文未定义问题中修复参数

如何解决“未捕获的类型错误:无法读取未定义的属性'参数'”reactjs + django

Google Analytics 在自定义报告中排除空的自定义变量