Andrew Fedoniouk (2013-07-10T23:49:40.000Z)
On Wed, Jul 10, 2013 at 4:24 PM, Rick Waldron <waldron.rick at gmail.com> wrote:
>
>
>
> On Wed, Jul 10, 2013 at 7:15 PM, Andrew Fedoniouk
> <news at terrainformatica.com> 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
domenic at domenicdenicola.com (2013-07-13T01:07:16.171Z)
On Wed, Jul 10, 2013 at 4:24 PM, Rick Waldron <waldron.rick at gmail.com> wrote:

> It gets created nowhere, because the body of a module is implicitly strict,
> so the above code produces a Reference Error.

Thanks Rick. And I suspect there is no way to reclaim that strictness, right?

Asking because it could be useful in cases like this :

```js
module "Safe" {
   "not use strict";
    export function eval(str) {
         return std.eval(str);
    }
}
```

And so if I will call:

```js
Safe.eval("gvar=666") ;
```

it will not pollute global namespace.