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>'
完全相同,但(可以说)更具可读性和惯用性。
为什么不起作用?
如果我为字符串值更改变量 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>'
完全相同,但(可以说)更具可读性和惯用性。