我来到这个问题:
f = (param) ->
console.info '#{param}'
f(1)
结果为#{param}
当我用双引号括起字符串时,这只是打印1
。我也在Ruby中测试过它,它的行为是一样的。但这恰好与CoffeeScript.org中的规则相矛盾:
CoffeeScript的黄金法则是:“它只是JavaScript”。
因为我认为在Javascript中,单引号和双引号被平等对待。我经常不使用Ruby。任何人都可以解释原因吗?
非常感谢。
答案 0 :(得分:14)
CoffeeScript中包含Ruby样式的字符串插值。 双引号字符串允许使用#{...}进行插值。 和单引号字符串是字面的。
答案 1 :(得分:11)
“它只是javascript”意味着它从根本上编译为普通的JavaScript,并且不会尝试采用完全不同的编程范例并将其编译为JavaScript。 CoffeeScript主要关注避免“坏部分”,样板和不必要的语法,而不是引入完全不同的基本结构,如数据类型等。
JavaScript没有字符串插值。 CoffeeScript从Ruby中带来了这一点。禁用单引号只是为了获得一个没有插值解释的字符串的干净方法。
不要将只是JavaScript 表示它是JavaScript 。这是一种风味/变体/兄弟。