Closed
Description
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