I figured that general discussion of CoffeeScript belongs to issue tracker. So here it goes.
It seems like coffee-script does not distinguish variable declaration and assignment. This means that, unless you are very careful with naming local variables, it's easy to unintentionally assign to a global variable. Consider this js code:
sys = require('sys');
var foo = 42;
(function() {
var foo = 43
}());
sys.puts(foo);
Here variable foo inside a function is local to that function. It is not possible to reproduce this code in CoffeeScript. CoffeeScript 'equivalent' will override global variable foo.
sys = require 'sys'
foo = 42
(() -> foo = 43)()
sys.puts foo
This may lead to hard to find bugs. What's your thoughts on this?
Regards,
-- Vitali
I figured that general discussion of CoffeeScript belongs to issue tracker. So here it goes.
It seems like coffee-script does not distinguish variable declaration and assignment. This means that, unless you are very careful with naming local variables, it's easy to unintentionally assign to a global variable. Consider this js code:
Here variable foo inside a function is local to that function. It is not possible to reproduce this code in CoffeeScript. CoffeeScript 'equivalent' will override global variable foo.
This may lead to hard to find bugs. What's your thoughts on this?
Regards,
-- Vitali