JS中for,for...in,for...of和forEach的區(qū)別和用法實(shí)例
for循環(huán)
基本語法格式:
for(初始化變量;條件表達(dá)式;操作表達(dá)式){
循環(huán)體語句;
}
普通for循環(huán)在Array和Object中都可以使用。for循環(huán)中可以使用return、break等來中斷循環(huán)。
//遍歷數(shù)組 var arr = [1,2,3,4,5]; for(var i=0;i<arr.length;i++){ console.log(arr[i]); }
//遍歷對象 var obj={ x0:10, x1:20, x2:30 } for(var k=0;k<3;k++){ console.log(obj['x'+k]); }
在遍歷對象時(shí),顯然存在著很大的限制,對屬性的命名和k的值都存在限制。
forEach循環(huán)
基本語法格式:
arr.forEach(function(k){
console.log(k);
})
依次從數(shù)組中取出元素放在k中,然后將k作為參數(shù)傳遞給函數(shù)
.forEach()是Array原型的一種方法,它允許您遍歷數(shù)組的元素, .forEach()不能遍歷對象。forEach 方法沒辦法使用 break 語句跳出循環(huán),或者使用return從函數(shù)體內(nèi)返回。
//遍歷數(shù)組 var arr = [3,2,3,9,5]; arr.forEach(function(value,arr){ console.log(value); })
for…in循環(huán)
基本語法格式:
for(var 變量 in 數(shù)組名或集合名)
{
數(shù)組名[變量]
}
變量中存放的數(shù)組或集合的索引。
//遍歷數(shù)組 var arr = [1,2,3,4,5]; for(var i in arr){ console.log(arr[i]); }
//遍歷對象 var obj={ x0:10, x1:20, x2:30 } for(var k in obj){ console.log(obj[k]); }
1.下標(biāo)的值可能會是字符串(String)類型
2.循環(huán)不僅會遍歷數(shù)組元素,還會遍歷任意其他自定義添加的屬性,如,obj上面包含自定義屬性,obj.name,那這次循環(huán)中也會出現(xiàn)此name屬性
3.某些情況下,上述代碼會以隨機(jī)順序循環(huán)數(shù)組
for-in循環(huán)設(shè)計(jì)之初,是給普通以字符串的值為key的對象使用的。而非數(shù)組。
for…of循環(huán)
基本語法格式:
for(var 變量 of 數(shù)組名或集合名)
{
console.log(變量);
}
變量中存放的是數(shù)組或集合中的元素。
//遍歷數(shù)組 var arr = [3,2,3,9,5]; for(var value of arr){ console.log(value); }
//遍歷對象 var obj={ x0:10, x1:20, x2:30 } for(var k of Object.entries(obj)){ console.log(k); }
entries() 方法返回一個(gè)數(shù)組的迭代對象,該對象包含數(shù)組的鍵值對 (key/value)。
迭代對象中數(shù)組的索引值作為 key, 數(shù)組元素作為 value。
1.可以避免所有 for-in 循環(huán)的陷阱
2.不同于 forEach(),可以使用 break, continue 和 return
3.for-of 循環(huán)不僅僅支持?jǐn)?shù)組的遍歷。同樣適用于很多類似數(shù)組的對象
4.它也支持字符串的遍歷
5.for-of 并不適用于處理原有的原生對象
總結(jié)
1.'for…in'用于迭代對象的所有'可枚舉'屬性,包括繼承的可枚舉屬性, 該迭代語句可用于數(shù)組字符串或普通對象,但不能用于Map或Set對象
2.'for…of'用于'可迭代'對象,迭代其值而不是其屬性,該迭代語句可以與數(shù)組,字符串Map或Set對象一起使用,但不能與普通對象一起使用。
到此這篇關(guān)于JS中for,for...in,for...of和forEach的區(qū)別和用法的文章就介紹到這了,更多相關(guān)JS中for,for...in,for...of,forEach區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 全面解析JavaScript里的循環(huán)方法之forEach,for-in,for-of
- 詳解Js里的for…in和for…of的用法
- js遍歷詳解(forEach, map, for, for...in, for...of)
- js中forEach,for in,for of循環(huán)的用法示例小結(jié)
- js中for-in和for-of的區(qū)別詳解
- JavaScript 中for/of,for/in 的詳細(xì)介紹
- JS中for...in?和?for...of?的區(qū)別解析
- JavaScript中for-in和for-of的不同之處及如何正確使用
- JavaScript中for of和for in的區(qū)別詳解
- JavaScript中for in和for of的區(qū)別示例詳解
相關(guān)文章
【經(jīng)驗(yàn)總結(jié)】編寫JavaScript代碼時(shí)應(yīng)遵循的14條規(guī)律
這篇文章主要介紹了編寫JavaScript代碼時(shí)應(yīng)遵循的14條規(guī)律,涉及javascript變量的定義,函數(shù)、表單、json的使用,邏輯運(yùn)算與頁面元素操作技巧等,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2016-06-06Bootstrap每天必學(xué)之附加導(dǎo)航(Affix)插件
Bootstrap每天必學(xué)之附加導(dǎo)航(Affix)插件,附加導(dǎo)航即粘貼在屏幕某處實(shí)現(xiàn)錨點(diǎn)功能,感興趣的小伙伴們可以參考一下2016-04-04JS使用parseInt解析數(shù)字實(shí)現(xiàn)求和的方法
這篇文章主要介紹了JS使用parseInt解析數(shù)字實(shí)現(xiàn)求和的方法,涉及javascript表單元素值的獲取及parseInt解析轉(zhuǎn)換字符串為數(shù)字的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08js學(xué)習(xí)總結(jié)之DOM2兼容處理順序問題的解決方法
這篇文章主要為大家詳細(xì)介紹了DOM2兼容處理順序問題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07解決微信小程序中轉(zhuǎn)換時(shí)間格式IOS不兼容的問題
今天小編就為大家分享一篇關(guān)于解決微信小程序中轉(zhuǎn)換時(shí)間格式IOS不兼容的問題,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02用js實(shí)現(xiàn)終止瀏覽器對頁面HTML的繼續(xù)解析即停止解析 兼容firefox
用js實(shí)現(xiàn)終止瀏覽器對頁面HTML的繼續(xù)解析即停止解析 兼容firefox...2007-11-11使用Nginx部署前端項(xiàng)目的詳細(xì)步驟記錄
在實(shí)際開發(fā)中我們通常會使用Nginx來部署前端靜態(tài)頁面,以提供快速訪問速度和良好的用戶體驗(yàn),這篇文章主要給大家介紹了關(guān)于使用Nginx部署前端項(xiàng)目的詳細(xì)步驟,需要的朋友可以參考下2024-08-08