for(var i =0,len=arr.length;i<len;i++){}
- 适合于数组的循环
**for(var key in obj){} **
- 适合json对象的循环
foreach
- 属于ES5的语法,能够同时获取到key value 数组本身
var arr = [1,2,3,4,5,6,4,3,5];
arr.forEach(function (item,index,arr) {
console.log(item,index,arr)
},null)
- 不能用break,continue语句跳出循环
- 不能函数内使用return语句
for of
- ES6语法,目前浏览器只支持使用item,不支持使用 解构语法 [item,index]
var arr = [1,2,2,3,3,3];
for(var item of arr){
console.log(item)
}
- 支持使用continue 与 break ,跳出循环;
jquery 中的each
源码: 有args参数与没有这个参数是不一样的
each: function( object, callback, args ) {
var name, i = 0,
length = object.length,
isObj = length === undefined || jQuery.isFunction( object );
if ( args ) {
if ( isObj ) {
for ( name in object ) {
if ( callback.apply( object[ name ], args ) === false ) {
break;
}
}
} else {
for ( ; i < length; ) {
if ( callback.apply( object[ i++ ], args ) === false ) {
break;
}
}
}
// A special, fast, case for the most common use of each
} else {
if ( isObj ) {
for ( name in object ) {
if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
break;
}
}
} else {
for ( ; i < length; ) {
if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
break;
}
}
}
}
return object;
},