如何排除闭包中未定义的参数?
How to exclude undefined parameters in a closure?
关于 closures
的 JavaScript
练习题如下:
更改函数以支持多个函数调用:
function joinWords(a, b) {
return console.log(a + ' ' + b);
}
请参阅下面的示例案例,了解示例输入及其预期输出。
输入 1:
const greet = joinWords("你好");
问候(“世界”);
输出 1:
“你好世界”
输入 2:
const greet = joinWords("Hey", "there!");
greet("Where", "is", "Foo", "Bar?");
输出 2:
“嘿!Foo Bar 在哪里?”
对于解决方案,我已经成功实现了一个闭包,但我仍然在控制台记录未定义的参数。也就是,对于第一个测试用例(输入 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
);
};
}
您可能正在寻找 rest parameters,它使函数接受任意数量的参数并将它们作为数组传递(然后可以调用 .join
方法):
function joinWords(...values) {
return values.join(" ");
}
关于 closures
的 JavaScript
练习题如下:
更改函数以支持多个函数调用:
function joinWords(a, b) {
return console.log(a + ' ' + b);
}
请参阅下面的示例案例,了解示例输入及其预期输出。
输入 1:
const greet = joinWords("你好");
问候(“世界”);
输出 1:
“你好世界”
输入 2:
const greet = joinWords("Hey", "there!");
greet("Where", "is", "Foo", "Bar?");
输出 2:
“嘿!Foo Bar 在哪里?”
对于解决方案,我已经成功实现了一个闭包,但我仍然在控制台记录未定义的参数。也就是,对于第一个测试用例(输入 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
);
};
}
您可能正在寻找 rest parameters,它使函数接受任意数量的参数并将它们作为数组传递(然后可以调用 .join
方法):
function joinWords(...values) {
return values.join(" ");
}