Re: variable declarations shadowing named properties on window

On 1/4/12 1:21 PM, Travis Leithead wrote:
>> -----Original Message-----
>> From: Boris Zbarsky [mailto:bzbarsky@MIT.EDU]
>>
>> On 1/4/12 3:24 AM, Ojan Vafai wrote:
>>> IE and Opera already do this and have done so for a long time, right?
>>
>> They've allowed var to shadow the frame names, right?
>>
>> Have they actually put the frame names somewhere on the proto chain
>> other than the global itself?  Doing that changes behaviors other than
>> that of var....
>
> The described behavior has been in IE for a while. In Trident, frame references are just another global scope polluter, but with higher priority. The var declarations are assigned the undefined value (I believe), and so they shadow everything else in the lookup order.

var declarations don't do any value assignment, per spec.  They just 
define a property if one isn't there already.  Try this testcase:

   <script>
     x = 5;
   </script>
   <script>
     var x;
     alert(x);
   </script>

Does that alert 5 in IE?  If so, how is this case different from the GSP 
case in IE?  In both cases, when the var declaration happens, you need 
to check whether the object already has an own property with that name....

Or does IE put all its GSPs, including frame names, on the proto chain 
and not on the object itself?

-Boris

Received on Wednesday, 4 January 2012 19:02:33 UTC