for, for..in, in, for...of的区别
for是ES5里做数组循环里最常用的
for (var i = 0; i < array.length; i++) { // todo }
for...in是ES5里用来遍历对象属性用的
var obj = {a:1, b:2, c:3}; for (var prop in obj) { console.log("obj." + prop + " = " + obj[prop]); }
注意,数组索引只是具有整数名称的枚举属性,并且与通用对象属性相同。不能保证for ... in将以任何特定的顺序返回索引。for ... in循环语句将返回所有可枚举属性,包括非整数类型的名称和继承的那些。
因为迭代的顺序是依赖于执行环境的,所以数组遍历不一定按次序访问元素。因此当迭代访问顺序很重要的数组时,最好用整数索引去进行for循环(或者使用 Array.prototype.forEach() 或 for...of 循环)。
in是用来判断某变量是否是对象的属性key-value的key的
var obj = { w: 'wen', j: 'jian' } var result = ("j" in obj); //true
for...of是ES6新增的,用来遍历具有Iterator接口的数据结构。
参考资料:
http://sunct.iteye.com/blog/1709017
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for...in