Coffeescript 意外令牌非法。。在某处

Coffeescript 意外令牌非法。。在某处,coffeescript,Coffeescript,我把头发扯下来;我无法运行(编译后的等效)函数,总是出现非法令牌错误。我已经检查了流氓的、不可见的字符,除了CR/LFs之外,里面什么都没有。您正在对数组调用JSON.parse,这显然是一个语法错误,而不是一个正常的异常,这是由于浏览器实现它的方式。你基本上是这样做的: addToBasket = (id, qty) -> if $.cookie('basket')? # Basket exists basket = $.parseJSON($.c

我把头发扯下来;我无法运行(编译后的等效)函数,总是出现非法令牌错误。我已经检查了流氓的、不可见的字符,除了CR/LFs之外,里面什么都没有。

您正在对数组调用
JSON.parse
,这显然是一个语法错误,而不是一个正常的异常,这是由于浏览器实现它的方式。你基本上是这样做的:

addToBasket = (id, qty) ->
    if $.cookie('basket')?
        # Basket exists
        basket = $.parseJSON($.cookie('basket'))
        basket.push( { 'id': id, 'qty': qty } )
        $.cookie('basket', JSON.stringify(basket))
    else
        # Basket doesn't exist
        alert 'Creating basket'
        basket = JSON.parse([{'id': id, 'qty': qty}])
        $.cookie('basket', JSON.stringify(basket))
这与:

JSON.parse([{id: 123}].toString())

这是非法的JSON,因此出现错误。

您确定示例第2行的问号正确吗?我不是咖啡脚本专业人士,但在文档中找不到任何关于问号的内容:@spontifix是的,它在该页面上被列为“存在运算符”。我最初尝试了bog标准“未定义”,没有任何区别;这个只是整理一下而已。啊,好吧。。。代码的其余部分看起来足够好了。不过,您需要解析
$.cookie('basket')
。在JSON解析器阻塞的“篮子”中可能有什么东西吗?
JSON.parse('[object Object]')