0

我尝试将此 .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

这里是整个代码:

http://jsfiddle.net/BNMa7/

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

4

1 回答 1

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()以使其具有正确的含义:

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

现在,最后,语法错误。乍一看,这似乎是完全有效的代码,并且错误消息不是很有帮助......但是这个代码有一个致命的错误。你看到了吗?您发布的示例没有任何问题;这仅在文件其余部分的上下文中是错误的。那是什么?

您混合了制表符和空格。切勿混合制表符和空格。CoffeeScript 编译器显然使用了与您的编辑器不同的选项卡宽度,因此它吓坏了,并给您一个疯狂的错误消息。

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

于 2013-02-02T18:23:00.600 回答