JavaScript中for…in 和for…of的区别
-
for…in循环:
只能获得对象的键名,不能获得键值
不仅会遍历键名,还会遍历原型链上的键(手写的,数组的也会遍历出来)function A(params) { this.a = 'haha'; this.b = 'bibi'; }; A.prototype.c = 'cici'; var a = new A(); for(var i in a){ console.log(i); }
输出:
-
for…of循环:
允许遍历获得键值
不会遍历原型链上的键值
只能用于有Iterator 接口的遍历
是es6的语法可以遍历:Array、 Arguments、 Set、Map、String、TypedArray、NodeList
普通的object类型是没有Iterator接口的 -
无论是for…in 还是for…of 都不能遍历出symbol类型的值
Java的增强型for循环
- for (int i = 0; i < arr.length; i++){逻辑},普通写法
- 增强型for循环:for(int i : arr){}
里面的i相当于JavaScript里面的for…of
是会直接遍历出里面的值的