diff --git a/packages/babel-plugin-transform-block-scoping/src/index.js b/packages/babel-plugin-transform-block-scoping/src/index.js index c6a7fe26f48e..3a9576a525fe 100644 --- a/packages/babel-plugin-transform-block-scoping/src/index.js +++ b/packages/babel-plugin-transform-block-scoping/src/index.js @@ -518,7 +518,7 @@ class BlockScoping { // remap loop heads with colliding variables if (this.loop) { // nb: clone outsideRefs keys since the map is modified within the loop - for (const name of [...outsideRefs.keys()]) { + for (const name of Array.from(outsideRefs.keys())) { const id = outsideRefs.get(name); if ( diff --git a/packages/babel-standalone/test/babel.js b/packages/babel-standalone/test/babel.js index 44b08166abcd..c6a450328491 100644 --- a/packages/babel-standalone/test/babel.js +++ b/packages/babel-standalone/test/babel.js @@ -210,6 +210,13 @@ }), ).not.toThrow(); }); + it("#11897 - [...map.keys()] in Babel source should be transformed correctly", () => { + expect(() => + Babel.transform("for (let el of []) { s => el }", { + plugins: ["transform-block-scoping"], + }), + ).not.toThrow(); + }); }); }, );