2017-06-03 69 views
0

爲什麼不工作?Javascript/Coffeescript附加TypeError:不是函數

它的工作原理是如果我爲字符串值更改變量msg。

代碼:

console.log full_messages # Array [ "text to be displayed" ] 
for msg in full_messages 
    $('#error_explanation ul').append('<li>'+ msg +'</li>') 

錯誤消息:

TypeError: msg is not a function

+0

@tholo你的意思是關於這個「$ - >」。如是!是的。 –

+0

'full_massages [msg]' – tholo

+0

$('#error_explanation ul')。append('

  • '+ full_messages [0] +'
  • ') - 這也沒用(沒有迭代) –

    回答

    2

    你的問題是在你的空格(或缺乏):

    '<li>'+ msg +'</li>' 
    

    的CoffeeScript認爲,在第二+是一元運算符,因此整個事物被解釋爲:

    '<li>' + msg(+'</li>') 
    

    如果你把你的二元運算符兩邊空格:

    '<li>' + msg + '</li>' 
    #  ^^^ ^^^ 
    

    那麼CoffeeScript中確實你希望它是什麼。 經驗法則:始終在二元運算符的兩側放置空格。

    你也可以使用字符串插值:

    "<li>#{msg}</li>" 
    

    變成完全相同的JavaScript作爲'<li>' + msg + '</li>',但(可以說)更具可讀性和地道。

    +0

    好人!我知道這個問題很愚蠢!非常好的關於插值的提示! –

    +0

    不客氣,我已經內化了很多小格式的「規則」,以至於我花了一些時間才弄清楚出了什麼問題。 –