不确定我在这里做错了什么;变量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 https://developer.mozilla.org/en-US/docs/Glossary/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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)