зависит от цели. Да, это изменение несовместимо. Если вы написали тесты, вы можете проверить, влияет ли это на вас. Возьмите этот маленький кусочек кода:
example = "new"
obj = method: (@example) -> console.log(example)
obj.method "old"
В 1,8 этом напечатает old
. В новой версии это печатает new
.
В старой версии @example
будет переведен в example
в параметры метода. Таким образом, вы получаете доступ к параметру функции obj.method
в старой версии.
В новой версии вы получаете доступ к переменной example
внешней области. a.example
по-прежнему устанавливается в "old"
в обоих случаях.
Здесь вы можете увидеть разницу в сгенерированном коде JS: ответ
-// Generated by CoffeeScript 1.7.1
+// Generated by CoffeeScript 1.9.0
(function() {
var example, obj;
example = "new";
obj = {
- method: function(example) {
- this.example = example;
+ method: function(_at_example) {
+ this.example = _at_example;
return console.log(example);
}
};
obj.method("old");
}).call(this);