我尝试将这个.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这里整个代码:
我真的不知道发生了什么,因为它告诉我'='是出乎意料的,但它清楚地定义了一个数组。帮助...
答案 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,但有很多选择。