【发布时间】:2019-09-21 00:50:49
【问题描述】:
我正在尝试以这种特定方式解决编码挑战。
目标是将字符串的每个第二个字母大写。
当我使用 letterArray[0] 或任何其他数字运行代码时,代码运行完美。但是当我将它切换到 letterArray[n] 时,代码崩溃了。我收到的错误消息是:
无法读取未定义的属性“toUpperCase”。
为什么 letterArray[n].toUpperCase() 未定义,而 letterArray[n].toUpperCase() 未定义?了解基本原理是我真正关心的问题。
let theString = "abcdefghijklm" // good
let theStringLength = theString.length // good
let letterArray = theString.split(""); // good
let newArray = []; // good
let i = 0; // good
let n = 1
for (let index = 0; index < theStringLength; index += 2) {
let lowCaseLetter = letterArray[i]
newArray += lowCaseLetter
i += 2
let upCaseLetter = letterArray[n].toUpperCase();
//if i change this to letterArray[0] the code works perfectly
newArray += upCaseLetter
n += 2
}
console.log(newArray)
【问题讨论】:
-
i和index始终相同,并且循环仅在index < theStringLength期间运行,因此i始终在界限内。到现在为止还挺好。但是n比i大一。
标签: javascript