When the rest parameter shared the same name as a default identifier
for a param, the loop would be hoisted outside the function!
```js
var a = 1;
for (var _len = arguments.length, a = Array(_len > 1 ? _len - 1 : 0),
_key = 1; _key < _len; _key++) {
a[_key - 1] = arguments[_key];
}
function foo2() {
var b = arguments.length <= 0 || arguments[0] === undefined ? a :
arguments[0];
assert.equal(b, 1);
}
foo2(undefined, 2);
```
And if you tried to reference any index or `#length`, it’d blow up and
refuse to transpile.
16 lines
245 B
JavaScript
16 lines
245 B
JavaScript
const a = 1;
|
|
function rest(b = a, ...a) {
|
|
assert.equal(b, 1);
|
|
}
|
|
rest(undefined, 2)
|
|
|
|
function rest2(b = a, ...a) {
|
|
assert.equal(a[0], 2);
|
|
}
|
|
rest2(undefined, 2)
|
|
|
|
function rest3(b = a, ...a) {
|
|
assert.equal(a.length, 1);
|
|
}
|
|
rest3(undefined, 2)
|