20 lines
600 B
JavaScript
20 lines
600 B
JavaScript
|
|
// A body `var` that shadows a name referenced in a default parameter
|
||
|
|
// expression must resolve the name from the outer scope at runtime,
|
||
|
|
// not from the (uninitialized) body var binding.
|
||
|
|
|
||
|
|
// A body `var` that shadows a name used in a default -- must use GetBinding,
|
||
|
|
// and a separate variable environment must be created.
|
||
|
|
var shadow = "outer";
|
||
|
|
function shadow_in_default(x = shadow) {
|
||
|
|
var shadow = "inner";
|
||
|
|
return x;
|
||
|
|
}
|
||
|
|
shadow_in_default();
|
||
|
|
|
||
|
|
// No conflict -- body var `y` should stay a local (Mov, no GetBinding).
|
||
|
|
function no_conflict(x = 1) {
|
||
|
|
var y = 2;
|
||
|
|
return y;
|
||
|
|
}
|
||
|
|
no_conflict();
|