Javascript/Coffeescript append TypeError: is not a function

Javascript/Coffeescript append TypeError: is not a function

为什么不起作用?

如果我为字符串值更改变量 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

您的问题出在空白处(或缺少空白处):

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

CoffeeScript 认为其中的第二个 + 是一元运算符,因此整个事情被解释为:

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

如果您在二元运算符的两边放置空格:

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

然后 CoffeeScript 会执行您期望的操作。 经验法则:始终在二元运算符的两边放置空格。

您还可以使用字符串插值:

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

JavaScript 与 '<li>' + msg + '</li>' 完全相同,但(可以说)更具可读性和惯用性。