JavaScript Implied Global
Here is a common Ruby technique:
$ me = myself = 'rubyist'
$ me # => 'rubyist'
$ myself # => 'rubyist'
Let's try something similar in JavaScript.
var func = function() {
var me = myself = 'rubyist';
};
This declares two local variables, me
and myself
, set to 'rubyist'
, right? As I learned today, no.
Variables in JavaScript are implied to be global. We must declare them as local with the var
keyword. Thus, this function assigns, from right to left, myself
as a global variable (because it isn't scoped on its own with var
), then me
as a local variable. Check it out:
$ func()
=> undefined
$ me
=> Uncaught ReferenceError: me is not defined
$ myself
"rubyist"
Define each variable explicitly and keep your global scope clean.
Tweet