以下几种解构方式都会报错
- let [foo] = 1;
- let [foo] = false;
- let [foo] = NaN;
- let [foo] = undefined;
- let [foo] = null;
- let [foo] = {};
前五个是因为将等号右边的值转成对象后不具备 Iterator 接口
最后一个是本身就不具备 Iterator 接口
原生具备 Iterator 接口的数据结构如下。
Array
Map
Set
String
TypedArray
函数的 arguments 对象
NodeList 对象