在JavaScript中使用字符串的for/in循环

在JavaScript中使用字符串的for/in循环,javascript,for-loop,Javascript,For Loop,我对JavaScript比较陌生,我发现了一个奇怪的for循环,如下所示: for (c in "test message") { } 通常,类似这样的东西在foreach循环中,“c”元素应该循环字符(t、e、s、t等等)。。。这一个循环整数 是否有一些文档可以理解这种行为 完整样本如下: <!DOCTYPE html> <html> <body> <p>Click the button to loop through the

我对JavaScript比较陌生,我发现了一个奇怪的for循环,如下所示:

for (c in "test message") {
}
通常,类似这样的东西在foreach循环中,“c”元素应该循环字符(t、e、s、t等等)。。。这一个循环整数

是否有一些文档可以理解这种行为

完整样本如下:

<!DOCTYPE html>
<html>
<body>
    <p>Click the button to loop through the 
        properties of an object named "person".</p>
    <button onclick="myFunction()">Try it</button>
    <p id="demo"></p>

    <script>
        function myFunction() {
            var x;
            var txt = "";
            var person = { fname: "John", lname: "Doe", age: 25 };
            var myString = "this is a test";

            for (x in myString) {
                txt = txt + x + ':' + myString[x] + '<br/>';
            }

            for (x in person) {
                txt = txt + x + ':' + person[x] + '<br/>';
            }
            document.getElementById("demo").innerHTML = txt;
        }
    </script>
</body>
</html>

在javascript中,..In的工作方式如下:

for (var key in objectOrArray) {
    console.log(key, objectOrArray[key]);
}
因此,它总是输出键,当循环通过字符串时,键是字符索引(基于0)

您也可以在字符串上使用相同的行为,如下所示:

console.log(str[5]); //the 6th character in the string "str"

对于..在works for json对象中,“x”表示对象中的元素。 要分割字符串值,可以使用normal for..循环

for (var x = 0; x < myString.length;x++) 
{
txt = txt + x.toString() + ':' + myString[x] + '<br/>';
}
for(var x=0;x;
}

此循环只需遍历给定数组的每个元素(在您的示例中是一个字符数组-字符串),并对每个元素执行操作。它的作用与for循环完全相同,只是不需要指定循环的开始、结束和步骤loop@NDraskovic问题是“键”如何变成一个整数。。。它是如何工作的?因此,在任何数组(包括字符串、整数或对象数组)“key”@Serge中,基本的经验法则是,它将返回您放入其中的任何对象的键。如果您可以使用
变量[“key”]
则它将输出“key”,如果您可以使用
变量[0]
则它将输出“0”。如果两个都不能使用,那么它就会失败。
for (var x = 0; x < myString.length;x++) 
{
txt = txt + x.toString() + ':' + myString[x] + '<br/>';
}