这段代码甚至是有效的JavaScript吗?
for (item in "abc") {
console.log(item);
}
输出:
0
1
2
答案 0 :(得分: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 :(得分:1)
是。
您看到的是字符串中属性的索引/名称。
将字符串编入索引"abc"[0]
会产生a
。
您也可以使用属性名称索引对象。
var x = {
foo: "hi"
};
console.log(x["foo"]);
循环只会遍历对象的所有成员。
答案 2 :(得分:1)
它基本上是一个遍历每个项目的foreach循环。在这种情况下,字符串“abc”看起来它只是打印出字符串位置,但这可以与对象一起使用来迭代它们。
答案 3 :(得分:1)
这是有效的代码。 JavaScript中的for
in
循环将遍历对象中的一组键。在"abc"
的情况下,键包括每个字符的索引,以及添加到String原型的任何其他属性。
由于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]);
}
&#13;
答案 4 :(得分:1)
for/in
迭代对象的可枚举属性。
因为JS允许您使用str[1]
中的数组语法读取字符串的字符,所以它会将每个索引的数字属性公开到字符串中,这就是0, 1, 2
输出的来源。这些是字符串对象的可枚举属性。
答案 5 :(得分:1)
记录字符串中的字母索引。
输出字母:
string = "abc";
for(var i = 0; i < string.length; i++){
console.log(string[i]);
}
输出:
a
b
c