Unexpected =在coffeescript类定义中

Sen*_*jai 1 coffeescript

我是咖啡脚本的新手,这个定义可能比这个问题本身更糟糕.

特定

class window.SlideManager                                                                                                                                                                     
  constructor: (@$contentDiv, @analyticsCanvas) ->                                                                                                                                            
    @iterator = Iterator(@slides)                                                                                                                                                             
    @slides = @$contentDiv.data('slides')                                                                                                                                                     

  nextSlide: ->                                                                                                                                                                               
    try {                                                                                                                                                                                     
      url = @iterator.next()                                                                                                                                                                  
    } catch {                                                                                                                                                                                 
      @iterator = Iterator(@slides)                                                                                                                                                           
      url = @iterator.next()                                                                                                                                                                  
    }                                                                                                                                                                                         

    this.renderSlide(url)                                                                                                                                                                     

  renderSlide: (slide) ->                                                                                                                                                                     
    $.get(slide, {nolayout: 'true'}, (data) ->                                                                                                                                                
      @$contentDiv.contents().replaceWith(data)                                                                                                                                               
      window.setupCanvas($(@analyticsCanvas), window.createChartData(window.getVisitCounts($(@analyticsCanvas))))                                                                             
    )                                                                                                                                                                                         
Run Code Online (Sandbox Code Playgroud)

我在第8行(url = @iterator.next())遇到意外=语法错误

有谁知道我可能会缺少什么?

Wex*_*Wex 5

你不应该使用大括号:

nextSlide: ->                                                                                                                                                                               
  try                                                                                                                                                                           
    url = @iterator.next()                                                                                                                                                                  
  catch
    @iterator = Iterator(@slides)                                                                                                                                                           
    url = @iterator.next()
Run Code Online (Sandbox Code Playgroud)

首先,基础知识:CoffeeScript使用重要的空格来分隔代码块.您不需要使用分号;来终止表达式,结束该行也会这样做(尽管分号仍可用于将多个表达式拟合到一行上).而不是使用花括号{ }来围绕函数,if语句,开关和try/catch中的代码块,而是 使用缩进.

见:http://coffeescript.org/

  • 进一步解释:CoffeeScript中的大括号用于表示对象文字.所以`{url = @ iterator.next()}`的意思是一个对象,这显然不是正确的语法. (2认同)