Keen eyes
BartC
bc at freeuk.com
Sun Jan 17 06:17:04 EST 2016
On 17/01/2016 08:25, Chris Angelico wrote:
> On Sun, Jan 17, 2016 at 6:37 PM, Ian Kelly <ian.g.kelly at gmail.com> wrote:
>> Technically it defaults to non local. The var statement allocates a
>> variable within the current scope. Otherwise it searches up the chain of
>> parent scopes for a matching variable...
>
> This far, it's exactly the same as C.
>
>> ... terminating at the global scope.
>
> This is the bit that gets ridiculous. Undeclared variables in C are
> compile-time errors. Undeclared variables in JS are implicit globals.
> This is stupid.
My own language is something in-between. If a name is not declared
locally, it will look at more global scopes. If nothing is found, it
will auto-declare a local.
So the JS bug wouldn't occur. However, there is the problem that, given
a perfectly working function with implicitly locals, at some point in
the future someone could introduce a global that will clash with the
name of a local, and screw things up.
Because of that, the Python scheme is better on the whole. The only
issue is that sometimes you think you're assigning to a global, but it's
really a local if you forget the 'global' declaration within the function.
--
Bartc
More information about the Python-list
mailing list