“unexpected'='”

时间:2013-02-02 15:26:49

标签: coffeescript

我尝试将这个.coffee文件编译成.js,但它给了我错误:

In projekt.coffee, Parse error on line 122: Unexpected '='

这是具体部分:

#line122 -># quotes = ["The people who were trying to make this world worse are not taking the day off. Why should I? <br> -Bob Marley", "Don't worry about a thing, every little thing is gonna be alright<br> -Bob Marley", "Better to die fighting for freedom then be a prisoner all the days of your life.<br> -Bob Marley", "Herb is the healing of a nation, alcohol is the destruction of mankind<br> -Bob Marley", "When you smoke the herb, it reveals you to yourself.<br> -Bob Marley", "My music fights against the system that teaches to live and die.<br> -Bob Marley"]
        quoteNumber = Math.floor(Math.random() * quotes.length) 
        $('#cytat').html '<p> #{quotes[quoteNumber]} <p>'.css 
            font-family : Finger Paint

ande这里整个代码:

http://jsfiddle.net/BNMa7/

我真的不知道发生了什么,因为它告诉我'='是出乎意料的,但它清楚地定义了一个数组。帮助...

1 个答案:

答案 0 :(得分:4)

我们应该在您描述的语法错误之前解决这个问题。

font-family不是有效的独立密钥。您需要引用它以便正确编译它。与Finger Paint相同 - 我不知道该怎么做。

字符串插值不适用于单引号字符串。如果希望用该索引处的引号替换#{quotes[quoteNumber]},则需要使用双引号。

通过这些修复,我们仍然存在运算符优先级的大问题:

$('#cytat').html "<p> #{quotes[quoteNumber]} <p>".css 
    'font-family': 'Finger Paint'

这相当于:

$('#cytat').html("<p> #{quotes[quoteNumber]} <p>".css('font-family': 'Finger Paint'));

哪个可能不是你的意思,因为字符串没有.css()方法。在.html()调用周围添加parens以使其具有正确的含义:

$('#cytat').html("<p> #{quotes[quoteNumber]} <p>").css
    'font-family': 'Finger Paint'

现在,最后,语法错误。乍一看,这似乎是完全有效的代码,并且错误消息“非常有用......但是这段代码有一个致命的错误。你看到了吗?你发布的样本没有错;这在文件的其余部分的上下文中是错误的。那是什么?

您混合了标签和空格。 从不混合标签和空格。 CoffeeScript编译器显然使用的选项卡宽度与编辑器不同,所以它很吓人,并且会给你一个疯狂的错误信息。

考虑使用文本编辑器自动将标签转换为(一致数量的)空格,或者至少使用一个允许您查看不可见字符的空格。我喜欢Sublime Text,但有很多选择。