1. 程式人生 > >for循環比較

for循環比較

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循環比較