2014-12-05 187 views

回答

3

字符串中for/in循環的含義是什麼?

如果將字符串視爲字符數組,則循環遍歷字符串的目的是遍歷每個字符。

在JavaScript中for..in循環將返回對象或數組中的,所以你看到的是數組索引。一個更有用的格式應該是:

var str, 
    item; 
str = "abc"; 
for (item in str) { 
    console.log(str[item]); 
} 

將輸出'a''b''c'

這是甚至有效的JavaScript代碼嗎?

現在是,但過去有問題。

注意,對於舊的瀏覽器,數組的索引,不支持對字符串,所以向後兼容的方式在一個字符串中的字符迭代是:

var str, 
    i; 
str = "abc"; 
for (i = 0; i < str.length; i++) { 
    console.log(str.charAt(i)); 
} 
1

它。

您所看到的是字符串中的索引/屬性名稱。 像"abc"[0]那樣對字符串進行索引會導致a

您也可以使用屬性名稱索引對象。

var x = { 
    foo: "hi" 
}; 
console.log(x["foo"]); 

循環只是通過對象的所有成員。

1

它基本上是一個遍歷每個項目的foreach循環。在這種情況下,字符串「abc」它看起來就像是打印出字符串位置,但是這可以用於對象來遍歷它們。

1

這是有效的代碼。 A forin JavaScript中的循環將迭代對象中的一組鍵。在​​的情況下,這些鍵包括每個字符的索引以及添加到字符串原型的任何附加屬性。

作爲for in的結果找到這些原型屬性(特別是如果對象已被修改),通常建議使用一種機制來跳過它們。在這種情況下,你可以使用

if(!"abc".hasOwnProperty(item))continue; 

如果你使用索引,這裏命名item,你可以單獨訪問字符下方觀察

for (item in "abc") { 
 
    console.log(item); 
 
    //this will log the letters one at a time 
 
    console.log("abc"[item]); 
 
}

1

for/in迭代對象的枚舉的屬性。

由於JS允許使用數組語法(如str[1])讀取字符串的字符,因此它會將每個索引的數字屬性公開到該字符串中,這就是您的0, 1, 2輸出的來源。這些是字符串對象的枚舉屬性。

1

它正在記錄字符串中的字母索引。

此輸出的字母:

string = "abc"; for(var i = 0; i < string.length; i++){ console.log(string[i]); } 輸出:

a 
    b 
    c 
相關問題