for...in輸入鍵;
for...in
循環有幾個缺點。
- 數組的鍵名是數字,但是
for...in
循環是以字符串作為鍵名“0”、“1”、“2”等等。 for...in
循環不僅遍歷數字鍵名,還會遍歷手動添加的其他鍵,甚至包括原型鏈上的鍵。- 某些情況下,
for...in
循環會以任意順序遍歷鍵名。
總之,for...in
循環主要是為遍歷對象而設計的,不適用於遍歷數組。
for...of輸出值;
for...of
循環相比上面幾種做法,有一些顯著的優點。
- 有着同
for...in
一樣的簡潔語法,但是沒有for...in
那些缺點。 - 不同於
forEach
方法,它可以與break
、continue
和return
配合使用。 - 提供了遍歷所有數據結構的統一操作接口。
var arr = ['a', 'b', 'c', 'd']; for (let a in arr) { console.log(a); // 0 1 2 3 console.log(arr[a]);// a b c d } for (let b of arr) { console.log(b); // a b c d }