2014-12-05 100 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 
相关问题