Simple js FOR loop returning 'undefined'
newStr is undefined. Add
var newStr = '';
So that you have
function translate2(x){
var newStr='';
x = "Hello World";
for(i=0; i<x.length; i++) {
newStr+=x.charAt(i);
}
console.log(newStr);
}
In JavaScript, if a variable is not initialized explicitly, it will by default have
undefined
. That is not a string but a primitive type of the Language. You can check that by printing itvar newStr; console.log(newStr); // undefined console.log(newStr + "thefourtheye"); // undefinedthefourtheye
So, just initialize the variable with an empty string, like this
var newStr = '';
Also, note that, in this line
for(i=0; i < x.length; i++) {
i
has never been declared before. So, a new global variablei
will be created. You may not want that. So, just usevar
keyword to declare the variable scoped to the current function, like thisfor (var i = 0; i < x.length; i++) {
Apart from that,
translate2
is a function and when it is invoked, one would expect it to return something. But you are not returning anything explicitly. So, again, JavaScript, by default, returnsundefined
. That is why you are getting the secondundefined
in the question. To fix that, usereturn
statement like thisfunction translate2(x) { var newStr = ""; for (var i = 0; i < x.length; i++) { newStr += x.charAt(i); } return newStr; }
You should first initialize the variable newStr.
var newStr = '';
Otherwise, newStr will be undefined and undefined + "asa" = "undefinedasa" in javascript. If you don't know what is undefined, check this out.