admin管理员组

文章数量:1290201

While using JavaScript, I am running into problems with concatenating empty strings. For example, declaring

var usersToAppend, leadsToAppend = "";
$(document).ready(function() {
    console.log(usersToAppend);
    parser = new DOMParser();

    //Get list of users
    var usersXML = parser.parseFromString('<%=WebConnector.getSomeXML()%>', "text/xml");
    console.log(usersXML);
    var users = usersXML.getElementsByTagName("users")[0].childNodes;
    for(var k = 0; k < users.length; k++)
        usersToAppend += users[k].childNodes[0].nodeValue + " -- "+users[k].attributes.getNamedItem("email").nodeValue+"<br>";
});

leads to usersToAppend beginning with undefined. How do I avoid this problem?

Edit: I was improperly initializing usersToAppend and leadsToAppend. Correct initialization code is

var usersToAppend = "", var leadsToAppend = "";

While using JavaScript, I am running into problems with concatenating empty strings. For example, declaring

var usersToAppend, leadsToAppend = "";
$(document).ready(function() {
    console.log(usersToAppend);
    parser = new DOMParser();

    //Get list of users
    var usersXML = parser.parseFromString('<%=WebConnector.getSomeXML()%>', "text/xml");
    console.log(usersXML);
    var users = usersXML.getElementsByTagName("users")[0].childNodes;
    for(var k = 0; k < users.length; k++)
        usersToAppend += users[k].childNodes[0].nodeValue + " -- "+users[k].attributes.getNamedItem("email").nodeValue+"<br>";
});

leads to usersToAppend beginning with undefined. How do I avoid this problem?

Edit: I was improperly initializing usersToAppend and leadsToAppend. Correct initialization code is

var usersToAppend = "", var leadsToAppend = "";
Share Improve this question edited Apr 27, 2013 at 18:19 Jared Nielsen asked Apr 26, 2013 at 19:31 Jared NielsenJared Nielsen 3,9079 gold badges27 silver badges38 bronze badges 7
  • 1 SSCCE or didn't happen. – Fabrício Matté Commented Apr 26, 2013 at 19:32
  • Wait are you initializing foo to ""? – Mike Christensen Commented Apr 26, 2013 at 19:33
  • Yes, because I need to access foo in a different function. – Jared Nielsen Commented Apr 26, 2013 at 19:33
  • It works fine for me - jsfiddle/FAR9w . – Ian Commented Apr 26, 2013 at 19:35
  • 2 @JaredNielsen - You need to initialize both: var usersToAppend = "", leadsToAppend = ""; – Mike Christensen Commented Apr 26, 2013 at 19:40
 |  Show 2 more ments

1 Answer 1

Reset to default 8

You forgot to initialize usersToAppend to an empty string:

var usersToAppend = "", leadsToAppend = "";

Empty strings concatenate just fine with other strings. The problem is when you don't assign any value, which is treated as undefined and coerces to the string "undefined" upon trying to concatenate with another string:

var foo = '';
foo += 'baz';
console.log(foo); //"baz"

var bar; //no value, treated as undefined
bar += 'baz';
console.log(bar); //"undefinedbaz", undefined coerced to string is "undefined"

本文标签: javascriptConcatenating an Empty StringStack Overflow