不确定我在这里做错了什么;变量 newStr
应该只返回“Hello World”,但我得到的是:
"undefinedHello World"
undefined
JS
function translate2(x){
var newStr;
x = "Hello World";
for(i=0; i<x.length; i++) {
newStr+=x.charAt(i);
}
console.log(newStr);
}
最佳答案
在 JavaScript 中,如果一个变量没有显式初始化,它默认为
undefined
。 .那不是字符串,而是语言的原始类型。您可以通过打印来检查var newStr; console.log(newStr); // undefined console.log(newStr + "thefourtheye"); // undefinedthefourtheye
所以,只需用一个空字符串初始化变量,就像这样
var newStr = '';
另外,请注意,在这一行
for(i=0; i < x.length; i++) {
i
以前从未声明过。因此,将创建一个新的全局变量i
。你可能不想要那样。因此,只需使用var
关键字来声明作用域为当前函数的变量,如下所示for (var i = 0; i < x.length; i++) {
除此之外,
translate2
是一个函数,当它被调用时,人们会期望它返回一些东西。但是您没有明确返回任何内容。因此,默认情况下,JavaScript 再次返回undefined
。这就是为什么您在问题中得到第二个undefined
的原因。要解决这个问题,请像这样使用return
语句function translate2(x) { var newStr = ""; for (var i = 0; i < x.length; i++) { newStr += x.charAt(i); } return newStr; }
关于javascript - 简单的 js FOR 循环返回 'undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28665160/