for(variable in object)循环中的变量之和导致连接JavaScript

for(variable in object)循环中的变量之和导致连接JavaScript,javascript,for-loop,Javascript,For Loop,我是JavaScript新手。我试着做一个循环,每个月打印一次,并对它们进行编号,但最终我得到了一个数字的串联。这是我的密码 var months = ['january', 'february', 'march','april', 'may', 'june', 'july', 'august', 'september', 'october', 'november, 'december']; for(

我是JavaScript新手。我试着做一个循环,每个月打印一次,并对它们进行编号,但最终我得到了一个数字的串联。这是我的密码

var months = ['january', 'february', 'march','april',
                    'may', 'june', 'july', 'august',
                    'september', 'october', 'november, 'december'];
        for(i in months){
            document.write((i+1)+'.- '+months[i]);
            document.write('<br >')
        }

此代码将为您提供所需的结果,将其更改为标准的
for
循环:

var months = ['january', 'february', 'march','april', 'may', 'june', 'july', 'august' 'september', 'october', 'november', 'december'];

for (i=0; i < months.length; i++) {
    document.write(i+1 + ".- " + months[i] + "<br>") 
};
var-months=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月];
对于(i=0;i”)
};

不要使用
for in
来迭代数组–它用于迭代对象的属性
for(var i=0;i
来匹配现有的代码,但实际上,您需要找到一个更先进的资源来学习JavaScript。任何教导
document.write
的内容都可能已经过时。for-in循环的索引始终是字符串,当您向数字添加字符串时,它会将它们连接起来。
for(i in-obj)
迭代键,它们是字符串。在数组上使用时,它们仍然是字符串。这就是为什么它们“连接”…+订单不能保证。尝试(+i+1)。(链接副本上的已接受答案提供了多个选项,但只有#3是正确的。不要继续使用带有转换到数字的
for in
循环。)感谢anwsers!这确实让我更加意识到我要走的路。又来了!
var months = ['january', 'february', 'march','april', 'may', 'june', 'july', 'august' 'september', 'october', 'november', 'december'];

for (i=0; i < months.length; i++) {
    document.write(i+1 + ".- " + months[i] + "<br>") 
};