咖啡脚本:如果......是......那么

时间:2012-03-09 23:53:16

标签: javascript compilation coffeescript

我正在用Coffee Script编写一个摇滚纸剪刀游戏,而且代码没有像我期望的那样编译。

的CoffeeScript

if choice is opponent_choice then alert "Tie!"

编译到

if (choice === opponent_choice) alert("Tie!");

但我期待

if (choice === opponent_choice) {
alert("Tie!");
}

我需要改变什么来按照我的预期进行编译?

4 个答案:

答案 0 :(得分:16)

如果一行上只有一个语句,则不需要大括号。它们功能相同,coffeescript编译器优化输出以使用最少量的字符。

答案 1 :(得分:5)

为什么重要?

要让CS创建一个块/多行then,您需要实际拥有多行then,例如:

if choice is opponent_choice
  alert "Tie!"
  alert "Foo"

编译为:

if (choice === opponent_choice) {
  alert("Tie!");
  alert("Foo");
}

答案 2 :(得分:3)

改变你的期望,而不是输出。


编辑:添加一些细节

CoffeeScript是一个很好的工具,不仅是编写代码的简短方法(它是),而且它将许多常见模式重新格式化为优秀的javascript。输出通常不如你在javascript中自己编写的那样可读,但是它在清晰度方面失去了它,它在改进的编程模式中得到了提升。

您应该将CoffeeScript视为源,而不是编译输出。您不会梦想编辑其他语言的编译输出吗? (我知道这个类比有点拉伸 - 但重点仍然是,源是读/写和编译输出执行)。

答案 3 :(得分:0)

// Generated by CoffeeScript 1.7.1

我使用这个版本的咖啡,可以按照你期望的方式编译。

(function() {
  if (choice === opponent_choice) {
    alert("Tie!");
  }

}).call(this);

你可以尝试一下。但是,我建议你不要过多关注编译后的输出。没关系。