javascript中for...of和for..in循環(huán)的區(qū)別
for…in可以用來干什么
(1)for…in最好用來遍歷對(duì)象,但也可以遍歷數(shù)組(有缺陷)
(2)for…in遍歷的是key-value中的key值
我們先看怎么使用for…in遍歷對(duì)象
const obj = {
?? ?a:1,
?? ?b:2,
?? ?c:3
}
for( var o in obj){
?? ?console.log(o); // 遍歷出來的是對(duì)象中的屬性,a,b,c
?? ?console.log(obj[o]); // 遍歷出來的是對(duì)象中屬性各自對(duì)應(yīng)的值1,2,3
}需要注意的是,使用for…in遍歷對(duì)象時(shí),不僅會(huì)把對(duì)象上的屬性遍歷出來,還會(huì)把對(duì)象原型鏈上的可枚舉的屬性遍歷出來
再看看for…in遍歷數(shù)組能不能成功
const arr = [1,2,3,4,5]
for(var a in arr){
console.log(a); // 輸出的是數(shù)組索引
console.log(arr[a]); // 輸出的是數(shù)組索引對(duì)應(yīng)的值
}
結(jié)果是成功的,但又為什么說最好不要用for…in遍歷數(shù)組呢?
(1)for…in遍歷出的數(shù)組索引為字符串型數(shù)字,不能直接進(jìn)行幾何運(yùn)算
(2)遍歷的順序可能不是按照實(shí)際數(shù)組的內(nèi)部順序
(3)使用for…in會(huì)遍歷所有的可枚舉屬性,包括原型
for…of能用來做什么
(1)for…of可以用來遍歷數(shù)/數(shù)組/字符串/map/set等擁有迭代器對(duì)象的集合
(2)for…of遍歷出來的是key-value中的value值
// 遍歷數(shù)組
var arr = [1,2,3,4,3,5,7];
for (let i of arr){
?? ?console.log(i);
}
// 遍歷字符串
var str = 'hello'
for (let s of str){
?? ?console.log(s);?
}
// 遍歷set集合
const set = new Set([1,2,3,4])
for (let s of set){
?? ?console.log(s);
}補(bǔ)充:
(1)for…of不能用來遍歷對(duì)象,因?yàn)槠胀▽?duì)象中沒有迭代器對(duì)象
(2)與forEach()不同的是,for…of可以使用break,continue,return等語句
總結(jié)下來就是:
(1)在遍歷對(duì)象時(shí)用for…in,在遍歷數(shù)組時(shí)用for…of
(2)for…in遍歷出的是key,for…of遍歷出的結(jié)果是value。
也就是說遍歷數(shù)組時(shí),for…in遍歷的是數(shù)組的索引,for…of遍歷的是數(shù)組的元素值。
到此這篇關(guān)于javascript中for...of和for..in循環(huán)的區(qū)別的文章就介紹到這了,更多相關(guān)javascript for...of和for..in內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
前端Echarts自適應(yīng)分辨率和縮放功能代碼實(shí)例
ECharts提供了自適應(yīng)功能,可以自動(dòng)調(diào)整圖表大小以適應(yīng)屏幕變化,下面這篇文章主要給大家介紹了關(guān)于前端Echarts自適應(yīng)分辨率和縮放功能的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07
JS簡(jiǎn)單獲取當(dāng)前日期和農(nóng)歷日期的方法
這篇文章主要介紹了JS簡(jiǎn)單獲取當(dāng)前日期和農(nóng)歷日期的方法,涉及javascript日期運(yùn)算與字符串轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2017-04-04
JavaScript創(chuàng)建對(duì)象的常用方式總結(jié)
這篇文章主要介紹了JavaScript創(chuàng)建對(duì)象的常用方式,結(jié)合實(shí)例形式總結(jié)分析了javascript面向?qū)ο蟪绦蛟O(shè)計(jì)中對(duì)象創(chuàng)建的常見方式、相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-08-08
cnblogs csdn 代碼運(yùn)行框?qū)崿F(xiàn)代碼
大家用cnblogs,csdn博客發(fā)布技術(shù)文檔的時(shí)候,可以用下面的代碼實(shí)現(xiàn)運(yùn)行功能。當(dāng)然大家看了源碼就會(huì)發(fā)現(xiàn)其實(shí)方法還有很多。有更好的方法就發(fā)布一下啊。2009-11-11
JavaScript高級(jí)程序設(shè)計(jì) 閱讀筆記(十九) js表格排序
js表格排序?qū)崿F(xiàn)代碼,需要的朋友可以參考下2012-08-08
bootstrap監(jiān)聽滾動(dòng)實(shí)現(xiàn)頭部跟隨滾動(dòng)
這篇文章主要為大家詳細(xì)介紹了bootstrap監(jiān)聽滾動(dòng)實(shí)現(xiàn)頭部跟隨滾動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11

