为什么会出现这种情况?
let str = 'sSAo'
console.log(str[0], str[3]) // all good
for (let i in str) {
// why str[i+1] is undefined ???
console.log(i, str[i], str[i+1])
}
最佳答案
问题是 for..in
循环迭代对象的属性名称。但属性名称始终是字符串,而不是数字。因此,例如,在第一次迭代时:
str[i+1]
评估为
str['0'+1]
这是
str['01']
相反,首先将 i
转换为 Number
:
let str = 'abcd'
for (let i in str) {
console.log(i, str[i], str[Number(i)+1])
}
关于javascript - str[index + 1] 在 for 循环中返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52109879/