尝试定义咖啡脚本函数时获取 "reserved word 'function’"
Getting "reserved word 'function’" when trying to define coffee script function
我有这个咖啡脚本
@open_login_dialog = () ->
opt = {
autoOpen: false,
modal: true,
width: 'auto',
focus: function(e) ->
$(this).dialog('option', 'width', $("#loginBox").width())
}
Rails 报告神秘错误,“SyntaxError: [stdin]:184:12: reserved word 'function'”。它没有告诉我一行,但是当我注释掉“focus:function”部分时,一切正常,这让我相信这是罪魁祸首。我如何编写上面的代码才能很好地与咖啡脚本一起播放?
根据@muistooshort 的评论,您需要使用 coffeescript 函数语法,将 function(a,b,c)
替换为 (a,b,c) ->
其次,您需要继续使用:
在对象内部进行赋值。
我还建议复习一下 coffeescript。这是我favourite resource上的语言。 linter 也有助于捕获这些基本语法错误。
您的代码可以进一步清理:
@open_login_dialog = ->
opt =
autoOpen: false
modal: true
width: 'auto'
focus: ->
$(this).dialog 'option', 'width', $('#loginBox').width()
说明
如果您不需要任何参数,可以在函数定义中省略 ()
,而只使用箭头 ->
.
您不需要 {}
方括号来定义对象
在多行定义对象时,不需要尾随逗号
您没有在焦点侦听器中使用 eventObject e
,因此也可以忽略它。
调用函数和传递参数时,括号是可选的。
我有这个咖啡脚本
@open_login_dialog = () ->
opt = {
autoOpen: false,
modal: true,
width: 'auto',
focus: function(e) ->
$(this).dialog('option', 'width', $("#loginBox").width())
}
Rails 报告神秘错误,“SyntaxError: [stdin]:184:12: reserved word 'function'”。它没有告诉我一行,但是当我注释掉“focus:function”部分时,一切正常,这让我相信这是罪魁祸首。我如何编写上面的代码才能很好地与咖啡脚本一起播放?
根据@muistooshort 的评论,您需要使用 coffeescript 函数语法,将 function(a,b,c)
替换为 (a,b,c) ->
其次,您需要继续使用:
在对象内部进行赋值。
我还建议复习一下 coffeescript。这是我favourite resource上的语言。 linter 也有助于捕获这些基本语法错误。
您的代码可以进一步清理:
@open_login_dialog = ->
opt =
autoOpen: false
modal: true
width: 'auto'
focus: ->
$(this).dialog 'option', 'width', $('#loginBox').width()
说明
如果您不需要任何参数,可以在函数定义中省略
()
,而只使用箭头->
.您不需要
{}
方括号来定义对象在多行定义对象时,不需要尾随逗号
您没有在焦点侦听器中使用 eventObject
e
,因此也可以忽略它。调用函数和传递参数时,括号是可选的。