为何浏览器输出字符串前出现undefined?JS代码问题求助
为什么输出前会有undefined?
哈哈,这个问题我之前刚踩过坑!咱们来一步步拆解:
问题根源
你定义let newString;的时候,没有给它赋初始值,在JavaScript里,未初始化的变量默认值是undefined。当你在循环里执行newString += str[i].toUpperCase()时,第一次拼接其实是:
undefined + 'I' // 结果就是 "undefinedI"
之后每次循环都会在这个基础上继续拼接,最后自然就带着开头的undefined啦。
修复方法
方法1:初始化空字符串
直接把newString初始化为空字符串,这样第一次拼接就是空字符加大写后的第一个字符,不会有额外内容:
let str = 'i am in the easycode'; let newString = ''; // 这里加上初始值 for (let i = 0; i < str.length; i++) { newString += str[i].toUpperCase(); } console.log(newString); // 输出:I AM IN THE EASYCODE
方法2:用原生字符串方法更简洁
其实JavaScript字符串本身就有toUpperCase()方法,根本不用手动循环,一行代码就能搞定:
let str = 'i am in the easycode'; let newString = str.toUpperCase(); console.log(newString); // 输出:I AM IN THE EASYCODE
内容的提问来源于stack exchange,提问作者Karyna
相关产品推荐
相关产品推荐

