为什么不工作?
如果我将变量 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>"
这与 '<li>' + msg + '</li>'
完全相同的 JavaScript但(可以说)更具可读性和惯用性。
关于Javascript/Coffeescript 追加类型错误 : is not a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44345304/