Javascript 为什么当bug出现时,这个括号在coffeescript中起作用

Javascript 为什么当bug出现时,这个括号在coffeescript中起作用,javascript,coffeescript,Javascript,Coffeescript,如果我想得到这样一个从coffeescript编译的js代码: var sortableTodos = new Sortables("todo-list", { constrain: true, clone: true, handle: ".todo-content", onComplete: function(ele){ sortableTodos.serialize(false, function(element, index){ todo = Todos.get(eleme

如果我想得到这样一个从coffeescript编译的js代码:

  var sortableTodos = new Sortables("todo-list", {
constrain: true,
clone: true,
handle: ".todo-content",
onComplete: function(ele){
  sortableTodos.serialize(false, function(element, index){
    todo = Todos.get(element.getProperty("id").replace("todo-", ""));
    todo.save({"order": index});
  });
}
});
我不能像下面那样编写咖啡代码:

sortableTodos = new Sortables(
"todo-list"
(
    constrain: true
    handle: '.todo-content'
    onComplete:(ele)->
        sortableTodos.serialize false, (element,index)->
                todo = Todos.get(element.getProperty("id")).replace("todo-","")
                todo.save("order":index)

)   
   )
但是下面的工作(在完成后有括号)


我不知道为什么?是虫子吗

当涉及到跨多行分割函数参数时,CoffeeScript解析器有许多怪癖。(请参阅。)省略括号时,函数的多行参数仅允许用于YAML样式的对象。那么一会儿

func
  foo: bar
  x: y
工作(编译以将单个对象传递给
func
),其他参数通常需要与
func
位于同一行。或者您可以在行尾使用
\
转义符,如在JS中,使编译器将多行视为一行:

func \
  a  \
  b
对于您的情况,最好的修复方法是将字符串移动到与函数调用相同的行,去掉对象文字周围的括号(如果愿意,请使用大括号),并与缩进保持一致:

sortableTodos = new Sortables("todo-list", {
    constrain: true
    handle: '.todo-content'
    onComplete: (ele) ->
        sortableTodos.serialize false, (element,index) ->
            todo = Todos.get(element.getProperty("id")).replace("todo-","")
            todo.save("order":index)
})

当涉及到跨多行分割函数参数时,CoffeeScript解析器有许多怪癖。(请参阅。)省略括号时,函数的多行参数仅允许用于YAML样式的对象。那么一会儿

func
  foo: bar
  x: y
工作(编译以将单个对象传递给
func
),其他参数通常需要与
func
位于同一行。或者您可以在行尾使用
\
转义符,如在JS中,使编译器将多行视为一行:

func \
  a  \
  b
对于您的情况,最好的修复方法是将字符串移动到与函数调用相同的行,去掉对象文字周围的括号(如果愿意,请使用大括号),并与缩进保持一致:

sortableTodos = new Sortables("todo-list", {
    constrain: true
    handle: '.todo-content'
    onComplete: (ele) ->
        sortableTodos.serialize false, (element,index) ->
            todo = Todos.get(element.getProperty("id")).replace("todo-","")
            todo.save("order":index)
})

我想你在“待办事项列表”之后需要一个逗号。在“待办事项列表”之后不需要逗号,我试过在“待办事项列表”之后需要一个逗号。在“待办事项列表”之后不需要逗号,我试过了。#1135是关于参数,而不是参数。#1135是关于参数,而不是参数。