关于javascript中的迭代,主要说一下自己的理解,如下:
一、关于Symbol
- 这是ES6才开始有的js数据类型,这是一个可以作为对象属性的具有唯一性标识的数据类型
- 所以,Symbol特别适合作为对象的属性,Symbol保证了对象属性的唯一性。
- Symbol不支持包装类型创建数据,因为ES6之后也不支持了
二、关于Symbol.iterator
- Symbol.iterator决定了数据是迭代的
- Map、Set、Array、String等可以迭代,因为其原型均存在Symbol.iterator方法
- 该方法可以被for...of迭代获取(字符串也可以被迭代)
- 可迭代的并不是可以像数组一样通过索引访问,但是可以通过先变成数组再访问
三、关于spread和rest
- spread对应的是对象解构赋值
- rest对应的是函数的剩余参数
- 都是三个点...的语法,但是意义不同
- spread和rest语法都要放在最后,否则会报错