JavaScript中{length}=arr这类数组解构语法的含义是什么?
语法说明
你标注的{ length } = arr属于JavaScript的对象解构赋值语法,是完全合法的写法:
- 数组在JS中本质是特殊的对象类型,内置了
length属性,因此可以直接通过对象解构提取该属性,等效于普通写法let length = arr.length - 该写法也支持提取所有带
length属性的类数组对象(比如DOM节点集合NodeList、函数参数集合arguments等),通用性更强
在循环中的作用
把length的提取写在for循环的初始化语句里,主要有两个目的:
- 一次性在循环开始前获取到数组长度,避免每次循环执行
i < arr.length判断时重复读取属性,属于传统的性能优化写法(现代JS引擎已经对这类场景做了自动优化,实际性能差异极小) - 简化代码,减少重复的
arr.length书写
完整reduce函数逻辑
这段代码是原生数组reduce方法的极简实现,执行逻辑如下:
- 接收三个入参:归并处理函数
reducer、累加器初始值initial、待处理数组arr - 初始化累加器
acc为传入的初始值 - 遍历数组每一项,调用
reducer传入当前累加器值和当前遍历的数组元素,将返回结果重新赋值给累加器 - 遍历结束后返回最终的累加器值
你给出的调用示例就是对数组[1,2,3]做累加计算,最终结果为6。
内容的提问来源于stack exchange,提问作者spb
相关产品推荐
相关产品推荐

