如何解决对于使用带有传入参数的函数调用的长度的循环,哪个属性提供了length的值?
我正在阅读Eloquent JavaScript的第4章,以防有人想确切了解正在发生的事情。 https://eloquentjavascript.net/04_data.html。
我试图了解此For循环从何处获取其长度值。
for (let event of journalEvents(JOURNAL)) {
console.log(event + ":",phi(tableFor(event,JOURNAL)));
正如本章前面所了解的那样,此For循环也可以写为:
for (let i = 0; i < journalEvents(JOURNAL).length; i++) {
let event = journalEvents(JOURNAL)[i];
console.log(event + ":",JOURNAL)));
}
这意味着在通过论点期刊后,可以在函数journalEvents()中的某个位置找到该长度。
function journalEvents(journal) {
let events = [];
for (let entry of journal) {
for (let event of entry.events) {
if (!events.includes(event)) {
events.push(event);
}
}
}
return events;
}
在这一点上,我有点迷茫。我猜我需要确定journalEvents(JOURNAL)的值。它会成为函数的返回值吗? 返回值是数组events []。这是否表示长度值是事件的长度[]?
解决方法
答案是是,长度值是events
数组的长度。但是,长度实际上并不是直接的因素。数组是可迭代的,因此您可以使用for...of
循环遍历它们。您可以通过更改函数journalEvents
使其返回一个数字,然后看看会发生什么来轻松地进行测试:)
函数journalEvents(journal)
返回一个数组,该数组被添加到函数内部。基本上,这与将函数返回的数组放在放置journalEvents(journal)
的位置相同:
for (let event of [something]) {
console.log(event + ":",phi(tableFor(event,JOURNAL)));
}
,
请注意,for…of
循环只会调用journalEvents(JOURNAL)
一次,然后迭代结果值。如果要将其重写为“普通”循环,则应为此添加一个临时变量:
const events = journalEvents(JOURNAL);
for (let i = 0; i < events.length; i++) {
const event = events[i];
console.log(event + ":",JOURNAL)));
}
这是否意味着长度值是事件的长度[]?
是的
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。