On Wed, Jul 10, 2013 at 4:24 PM, Rick Waldron <[email protected]> wrote:
>
>
>
> On Wed, Jul 10, 2013 at 7:15 PM, Andrew Fedoniouk
> <[email protected]> wrote:
>>
>> Consider this simple construct:
>>
>> module "test" {
>> export function setVar() {
>> gvar = "GVAR"; // note 'gvar' is not defined in the
>> module
>> }
>> export function getVar() {
>> return gvar;
>> }
>> }
>>
>> module Test from "test";
>>
>>
>> Having this in place I am calling
>>
>> Test.setVar();
>>
>> Question: where is that 'gvar' created? Possible case:
>>
>> a. {{globalns}}.gvar == "GVAR" // so in global namespace or
>> b. {{globalns}}.Test.gvar == "GVAR" // in module namepspace
>>
>> In other words does the module establish its own dynaimic namespace/scope?
>>
>> If that behavior is spec'ed already I'll appreciate for the link.
>
>
> It gets created nowhere, because the body of a module is implicitly strict,
> so the above code produces a Reference Error.
>
> Rick
>
Thanks Rick. And I suspect there is no way to reclaim that strictness, right?
Asking because it could be useful in cases like this :
module "Safe" {
"not use strict";
export function eval(str) {
return std.eval(str);
}
}
And so if I will call:
Safe.eval("gvar=666") ;
it will not pollute global namespace.
--
Andrew Fedoniouk.
http://terrainformatica.com
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss