CoffeeScript 1.9.0更改为变量名称

时间:2015-02-05 15:03:47

标签: coffeescript

CoffeeScript 1.9.0 ChangeLog中,我读到了:

  

更改了内部编译器变量名称生成的策略。请注意,这意味着@example函数参数不再可用作函数体中的裸example变量。

我不太明白这对我来说对用户意味着什么。这在某种程度上是一种不相容的变化吗?我可以安全地升级到1.9.0版本吗?

2 个答案:

答案 0 :(得分:4)

这取决于。是的,这种变化是不相容的。如果你有书面测试,你可以检查它是否会影响你。拿一小段代码:

example = "new"
obj = method: (@example) -> console.log(example)
obj.method "old"

在1.8中,这将打印old。在新版本中,这会打印new

在旧版本中,@example将在方法参数中转换为example。所以你在旧版本中访问obj.method的函数参数 在新版本中,您正在访问外部作用域的example变量。 a.example。

在这里,您可以看到生成的JS代码的不同之处:

"old"

答案 1 :(得分:0)

请参阅Patrick J. S.的答案,了解变化的含义。

请参阅How do I find cases of CoffeeScript 1.9.0 breaking change in my code?了解如何安全升级,以及如果不能安全升级。