我在一个简单的表达式上发现了一个咖啡编译器的奇怪行为,这与 coffeescript.org 网站上的交互式编译器反应不同。
当我尝试用咖啡编译下一个字符串时:
(console.log i; break) for i in [0..10]
我有:
SyntaxError:在 repl 中,不能在表达式中使用纯语句。在 SyntaxError(未知来源)...
但是 coffescript.org 的交互式编译器中的相同表达式编译得很好,正如我所期望的那样:
var i, _i;
for (i = _i = 0; _i <= 10; i = ++_i) {
console.log(i);
break;
}
为什么咖啡不喜欢 () 在这里分组?
UPD
另一个奇怪的事情 - 它并不总是发生,有时,经过多次尝试和变化,coffee 开始正常编译完全相同的表达式,没有错误。
但似乎在交互模式下,咖啡总是失败。
我发现的另一件奇怪的事情——这个错误只有在我使用“break”关键字时才会发生。表达式 '(console.log i; i+1) for i in [0..5]' 工作得很好并返回一个数组。