在搜索箭头功能时,我遇到了这个example
let labels = [];
repeat(5, i => {
labels.push(`Unit ${i + 1}`);
});
console.log(labels);
// → ["Unit 1", "Unit 2", "Unit 3", "Unit 4", "Unit 5"]
第一个MDN重复方法似乎只接受一个参数(count)
。
2,箭头函数应这样编写:i = () => {}
,而不是i => {}
这是一个过时的代码段,还是不管用还是我应该用另一种方式解释它?
答案 0 :(得分:1)
本文提到的repeat
方法不是String.prototype.repeat
,而是文章本身定义的独立函数-它不是内置函数:
但是,如果我们要执行除记录数字以外的其他操作怎么办?由于“做某事”可以表示为一个函数,而函数只是值,因此我们可以将操作作为一个函数值传递。
function repeat(n, action) {
for (let i = 0; i < n; i++) {
action(i);
}
}
repeat(3, console.log);
您提到的语法
箭头函数应这样写:i =()=> {},而不是i => {}
仅在所讨论的箭头函数旨在接受完全为零的参数时为true。具有一个参数可以的箭头函数的参数列表中省略了括号。 (两个或多个参数需要再次加上括号)
您提到的代码片段确实可以正常工作:
function repeat(n, action) {
for (let i = 0; i < n; i++) {
action(i);
}
}
let labels = [];
repeat(5, i => {
labels.push(`Unit ${i + 1}`);
});
console.log(labels);
答案 1 :(得分:0)
它看起来像是repeat
的自身功能,而不是String
之一。
在这种情况下,您可以将具有所需参数签名的函数传递给该函数。
const
repeat = (l, fn) => {
var i;
for (i = 0; i < l; i++) fn(i);
};
let labels = [];
repeat(5, i => labels.push(`Unit ${i + 1}`));
console.log(labels); // → ["Unit 1", "Unit 2", "Unit 3", "Unit 4", "Unit 5"]