for of 是es6新增的循环方式,请问for in 和for of的区别
1 for in会返回数组中所有可枚举属性,包括原型链上可枚举的属性,会遍历对象的整个原型链,性能较差不推荐使用;
for of 不会往原型链下继续循环遍历,只会返回数组索引对应的属性值;for in 遍历数组拿到的是数组的索引for in 遍历对象拿到的是对象的key值;for of 遍历数组拿到的是数组的值for of 不能用来遍历obj {a:1}因为对象不是可迭代属性;
总结
for in 循环主要是用来遍历对象的,【它虽然可以用来遍历数组,但是因为性能原因不适用于遍历数组。】;
for of 循环可以用来遍历数组,不能用来遍历对象【遍历对象会报错】;
useState为什么是用数组结构而不用对象?
因为数组的结构可以自己任意定义变量的名称,而如果使用对象的话就只能跟hooks内部的变量名一个的名字,如果需要自定义名字则要用E6语法:去改名字,这样代码量会变大。