javascript - For循环使用带有传递参数的函数调用的长度,什么属性提供长度值?
问题描述
我正在阅读 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 + ":", phi(tableFor(event, JOURNAL)));
}
这意味着当传递参数 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
它,使其返回一个数字,然后看看会发生什么:)
推荐阅读
- laravel - Lavarel 不接受来自带有 axios 的 Vue 的 Js 日期格式,捕获 500 内部错误
- linux - 无法在 Windows 10 中安装的 ubuntu 中查看外部硬盘驱动器
- javascript - api调用的第一个响应返回null/undefined,但第二次我在reactjs中得到了正确的响应
- visual-studio-code - VSCode Intellisense 不能在 commonjs 文件中完全工作?
- javascript - 将反应内联样式值作为组件加载中的变量传递
- python - 为什么我不能将 cv2 和其他模块导入 python
- angular - Angular Reactive Form:如何监听 FormArray 的 FormControls 的变化
- email - 为什么邮件服务器中有 2 个不同的服务器(传入和传出)?
- python - 如何为多个用户(学生和老师)制作序列化程序?
- c++ - 如何检测该宏已在当前范围内使用?