2011-04-28 29 views
0

我預計有下面2個代碼段是等同的:我必須在返回變量之前將函數結果賦值給變量嗎?

function waitFirstLoadHTML(message) { 
    var r = '<div class="form-blocker">' + 
    '<span class="ui-corner-all">' + message + '</span>' + 
    '</div>'; 
    return r; 
} 

function waitFirstLoadHTML(message) { 
    return '<div class="form-blocker">' + 
    '<span class="ui-corner-all">' + message + '</span>' + 
    '</div>'; 
} 

但不知何故第一個返回預期的字符串值,而第二個返回undefined。任何想法爲什麼?

+2

它適用於我... ... http://jsfiddle.net/samccone/JFPzV/ – samccone 2011-04-28 22:08:16

+0

@smccone:是的,因爲它應該。但在我的頁面中並沒有。我花了一個小時,把我的問題縮小到這個功能。如果我用後者運行該頁面 - 它與前者一起失敗 - 就會起作用。而現在我迷了路 - 我能做些什麼來打破後者,但不是前者 – mfeingold 2011-04-29 01:10:13

回答

1

我一直無法把在JavaScript中多行字符串 - 它的工作原理,如果你這樣做:

function waitFirstLoadHTML(message) 
{ 
    return '<div class="form-blocker"><span class="ui-corner-all">'+message+'</span></div>'; 
} 
+0

沒有想到這一點 - 爲了更好的可讀性而拆分線條。你有什麼樣的麻煩? – mfeingold 2011-04-29 01:04:10

+0

我一直有錯誤,當試圖將值放在JS中的多行 - 不知道爲什麼..最好爲了可讀性,我會喜歡.. var html =''; html + ='

'; html += 'content'; html += '
';返回html; – Marty 2011-04-29 01:06:43

1

你的榜樣工作正常。如果你在瀏覽器中的發言權看結果:

document.write(waitFirstLoadHTML(undefined)); 

這將顯示爲undefined,但實際的字符串是:

<div class="form-blocker"><span class="ui-corner-all">undefined</span></div> 

你確定你不是從失去了一些東西你例?

+0

當然,如果參數爲'未定義',則結果字符串將包含單詞「未定義」,但結果的類型仍然是字符串。我遇到的問題是返回的結果不是一個字符串,而我試圖提供給它的JQuery函數並不能識別它。 – mfeingold 2011-04-29 01:03:15

+0

@mfeingold - 您需要提供一個更完整的示例,因爲您已經上面張貼的工作如預期,所以你的問題必須與其他東西。 – 2011-04-29 01:49:57

0

在Javascript中,您不需要將返回分爲兩個語句(除非需要)。我想這個例子可能還有其他的東西在丟失嗎?