2013-04-26 63 views
1

使用JavaScript時,我遇到了連接空字符串的問題。例如,聲明連接空字符串

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>"; 
}); 

導致usersToAppendundefined開始。我如何避免這個問題?

編輯:我是不正確初始化usersToAppendleadsToAppend。正確的初始化代碼

var usersToAppend = "", var leadsToAppend = ""; 
+1

[SSCCE(http://sscce.org/)或沒有發生。 – 2013-04-26 19:32:45

+0

等待你將'foo'初始化爲'「」'? – 2013-04-26 19:33:05

+0

是的,因爲我需要在不同的功能中訪問'foo'。 – 2013-04-26 19:33:50

回答

6

你忘了初始化usersToAppend爲空字符串:

var usersToAppend = "", leadsToAppend = ""; 

空字符串拼接只是與其他字符串的罰款。問題是,當你不指定任何值,這是在試圖用另一個字符串來連接視爲undefined並且強制字符串"undefined"

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" 
+0

將'undefined'強制轉換爲'「」''是否是一個更好的設計選擇? – 2013-04-26 19:45:10

+0

@JanDvorak你是說從ES規範的角度來看,還是在代碼本身中是'foo =(foo ||'')+'baz';'?那麼從ES規格來看,我相信這可能會導致一些難以發現的無法預料的錯誤。 ':P' – 2013-04-26 19:47:57

+1

我的意思是從ES角度。它確實幫助錯誤脫穎而出 - 感謝您的注意。關於代碼本身 - 我喜歡在Javascript中使用默認值。 – 2013-04-26 19:51:07