在CoffeeScript 1.9.0 ChangeLog,我讀:的CoffeeScript 1.9.0修改變量名
更改策略,內部編譯器變量名的產生。請注意,這意味着
@example
函數參數不再可用作函數體內的變量example
變量。
我不太明白這對我來說意味着什麼作爲用戶。這在某種程度上是不兼容的變化嗎?我可以安全升級到1.9.0版嗎?
在CoffeeScript 1.9.0 ChangeLog,我讀:的CoffeeScript 1.9.0修改變量名
更改策略,內部編譯器變量名的產生。請注意,這意味着
@example
函數參數不再可用作函數體內的變量example
變量。
我不太明白這對我來說意味着什麼作爲用戶。這在某種程度上是不兼容的變化嗎?我可以安全升級到1.9.0版嗎?
這取決於。是的,這種改變是不相容的。如果你有書面測試,你可以檢查它是否會影響你。拿這一小段代碼:
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);
見帕特里克J. S.」答案什麼變化意味着。
請參閱How do I find cases of CoffeeScript 1.9.0 breaking change in my code?瞭解如何知道您是否可以安全升級,以及您需要做什麼,如果沒有。