Javascript str[index+;1]返回for循环中未定义的值

Javascript str[index+;1]返回for循环中未定义的值,javascript,for-loop,Javascript,For Loop,为什么会发生这种情况 let str='sSAo' console.log(str[0],str[3])//一切正常 为了(让我进来){ //为什么str[i+1]没有定义??? log(i,str[i],str[i+1]) }原因是i+1不会像您预期的那样加上该值,该值将是01,11,21,31,这就是原因,您需要使用parseInt()来执行此操作 let str='sSAo' console.log(str[0],str[3])//一切正常 为了(让我进来){ //为什么str[i+1

为什么会发生这种情况

let str='sSAo'
console.log(str[0],str[3])//一切正常
为了(让我进来){
//为什么str[i+1]没有定义???
log(i,str[i],str[i+1])

}
原因是
i+1
不会像您预期的那样加上该值,该值将是
01,11,21,31
,这就是原因,您需要使用
parseInt()
来执行此操作

let str='sSAo'
console.log(str[0],str[3])//一切正常
为了(让我进来){
//为什么str[i+1]没有定义???
log(i,str[i],str[parseInt(i)+1]);//但是最后一个仍然是未定义的
}
请使用
parseInt()
如下:

let str='sSAo'
console.log(str[0],str[3])//一切正常
为了(让我进来){
//为什么str[i+1]没有定义???
log(i,str[i],str[parseInt(i)+1])

}
问题在于,
for..in
循环迭代对象的属性名称。但是属性名总是字符串,而不是数字。因此,例如,在第一次迭代中:

str[i+1]
评估为

str['0'+1]
那是

str['01']
相反,先将
i
转换为
Number

let str='abcd'
为了(让我进来){
console.log(i,str[i],str[Number(i)+1])

}
i
实际上是一个字符串,因此
+
将把1连接到其值

您可以使用
+
将变量转换为数字:

let str='sSAo'
console.log(str[0],str[3])//一切正常
为了(让我进来){
//为什么str[i+1]没有定义???
log(i+1,+i+1,str[i],str[+i+1])

}
你是唯一一个解释为什么
i
是一个字符串的人,而不是仅仅展示如何修复它。这不是我说的吗?