在開發的過程中,遍歷是一個經常遇到的。而for迴圈則是Javascript工具箱里一個好用的,也常用的工具。每個人的習慣不同,for迴圈的寫法也不盡相同。 1、不寫聲明變數的寫法: 我們很多時候的寫法使這種(做小白不堪迴首的那些年),但這種寫法,每次都會獲取一下數組的長度,這會降低代碼的效率。 2、 ...
在開發的過程中,遍歷是一個經常遇到的。而for迴圈則是Javascript工具箱里一個好用的,也常用的工具。每個人的習慣不同,for迴圈的寫法也不盡相同。
1、不寫聲明變數的寫法:
for(var i = 0;i<arr.length;i++){}
我們很多時候的寫法使這種(做小白不堪迴首的那些年),但這種寫法,每次都會獲取一下數組的長度,這會降低代碼的效率。
2、寫聲明變數的寫法:
for(var i = 0,len = arr.length;i < len;i++){}
這樣寫只獲取一次數組的長度,可以解決第一種寫法的弊端。
3、for-in迴圈
for-in 迴圈主要用於遍歷對象,
for()中的格式:for(keys in zhangsan){}
keys表示obj對象的每一個鍵值對的鍵!!所有迴圈中,需要使用obj[keys]來取到每一個值!
for-in 迴圈,遍歷時不僅能讀取對象自身上面的成員屬性,也能延續原型鏈遍歷出對象的原型屬性。
所以,可以使用hasOwnProperty判斷一個屬性是不是對象自身上的屬性。
obj.hasOwnProperty(keys)==true 表示這個屬性是對象的成員屬性,而不是原先屬性。
1 //聲明一個Peson類 2 3 function Man(){ 4 5 this.name = "張三"; 6 7 this.age = 14; 8 9 this.func1 = function(){ 10 13 } 14 15 } 16 17 //實例化這個類 19 var zhangsan = new Person(); 20 21 //使用for-in遍歷這個對象 22 23 for(keys in zhangsan){ 25 console.log(zhangsan[keys]) 27 }
4、for-of迴圈
這是ES6新特性,借鑒 C++、Java、C# 和 Python 語言,引入了for...of迴圈,作為遍歷所有數據結構的統一的方法。
一個數據結構只要部署了Symbol.iterator屬性,就被視為具有iterator介面,就可以用for...of迴圈遍歷它的成員。也就是說,for...of迴圈內部調用的是數據結構的Symbol.iterator方法。
for...of迴圈可以使用的範圍包括數組、Set 和 Map 結構、類數組對象(比如arguments對象、DOM NodeList 對象)、Generator 對象,以及字元串。
thit's all!