for循環比較
阿新 • • 發佈:2018-12-25
ttr 不用 操作 字符 維護 語句 比較 循環 ood
在實際的開發過程中,一般都會用到for循環,都可以用來遍歷,但是這幾個之間又存在細微的差別!
一,傳統的for循環;
var arr = [‘good‘, ‘good‘, ‘study‘]; for (var i = 0; i< arr.length; i++) { console.log(arr[i]); };
優點: 如果循環的次數比較多的時候,相較於其他的循環方法,運行的時間會更快;如果循環的次數比較少的時候,運行時間幾乎差不多
缺點: 1,這種傳統方法,無法只關註元素本身,還得維護變量i和以及邊界length;
2, 當嵌套的循環很多層的時候,需要維護多個變量i,代碼會變得很復雜
二,forEach;
var arr = [‘good‘, ‘good‘, ‘study‘]; arr.forEach(item => { console.log(item); });
優點:不用維護變量i和邊界length
缺點: 在循環的過程中,如果有break或者continue的時候,會報錯(只能一個循環走到底,不能中途退出循環)
三,for....in
var arr = [‘good‘, ‘good‘, ‘study‘]; for (var i in arr) { console.log(arr[i]); };
for..in 是一種精準的叠代語句,可以枚舉對象的所有可枚舉的屬性,除了可以遍歷數組,對象之外,還可以遍歷字符串
優點:不需要維護變量i以及邊界length,也支持break以及continue等操作
var father = { fatherArr: ‘attr‘ }; var instance = Object.create(father); instance.a = 1; instance.b = 2; instance.c = 3; for (var i in instance) { console.log(instance[i]); };
1,2,3,attr
缺點:for..in語句除了可以枚舉自身的屬性之外,還可以遍歷原型身上的屬性,同樣的,數組也存在這個問題
四: for..of;
var attr = [‘good‘, ‘good‘, ‘study‘]; for (var i of attr) { console.log(attr[i]); };
優點:不用維護變量i和邊界length,可以使用break,continue等操作,也不存在for..in的遍歷原型的屬性等問題
缺點:但是for..of是es6才提出來的,所以存在兼容性問題,如果需要兼容低版本瀏覽器的話,不建議使用;同時只能用戶遍歷可叠代的對象,不可叠代對象直接報錯
for循環比較