[It might be already discussed, but I couldn't find it.]
According to my understanding, the spec does not specify the behavior of
sharing module's environment (more specifically Module Record) along multiple
imports, but leaves it as implementation-dependent. If it is true, what is the
rationale? Is there any possibility that different browser engines will have
different behavior on this?
For example, suppose that module 'lib' is imported both in module 'a' and
module 'b', as follows:
// lib.js
var counter = 0;
export function inc() { console.log(++counter); }
// a.js
import { inc } from 'lib'
export function f() { inc(); }
// b.js
import { inc } from 'lib'
export function g() { inc(); }
// main.js
import { f } from 'a'
import { g } from 'b'
f(); // 1
g(); // 1 or 2 ???
Then, the spec allows both cases:
1) a single environment of the module 'lib' is shared for module 'a' and 'b'
2) separate environments are used for each module 'a' and 'b'
In case #1, g() outputs '2', while in case #2, g() outputs '1'.
In the spec, HostResolveImportedModule(referencingModule, specifier) says that
"multiple different referencingModule, specifier pairs may map to the same
Module Record instance." So, for the above example, both behaviors are
possible. While Node.js implements the case #1, is there any existing (or
planned) implementation that implements the case #2?
Best,
Daejun
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss