# babel-destructuring **Repository Path**: pg0xff/babel-destructuring ## Basic Information - **Project Name**: babel-destructuring - **Description**: 研究 Babel 编译解构赋值的策略变化 - **Primary Language**: JavaScript - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-28 - **Last Updated**: 2022-12-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 7.19.0 发版 Blog 没有解构赋值的修改内容: [https://babeljs.io/blog/2022/09/05/7.19.0](https://babeljs.io/blog/2022/09/05/7.19.0) ## 7.19.4 ## ### 【Spec Compliance】 ### [Disallow rest object destructuring of null/undefined](https://github.com/babel/babel/pull/14985) #### packages/babel-helpers/src/helpers.ts #### [https://github.com/babel/babel/pull/14985/files#diff-c420e27a7a10eb6270909de636cbe150184447a47172e621c23ff26fefbfbba0](https://github.com/babel/babel/pull/14985/files#diff-c420e27a7a10eb6270909de636cbe150184447a47172e621c23ff26fefbfbba0) ![](./images/babel-helpers.helpers.ts.png) #### packages/babel-plugin-proposal-object-rest-spread/src/index.ts #### [https://github.com/babel/babel/pull/14985/files#diff-cb21a0edfb439e6233bec8db3103800ccb451c0eaeb2ea3386b013dc776fc4fc](https://github.com/babel/babel/pull/14985/files#diff-cb21a0edfb439e6233bec8db3103800ccb451c0eaeb2ea3386b013dc776fc4fc) ![](./images/babel-plugin-proposal-object-rest-spread.png) #### packages/babel-plugin-transform-destructuring/src/util.ts #### [https://github.com/babel/babel/pull/14985/files#diff-6427eed7e95cfa97e5ed7572605894129bb4816c6fca74c8e335188071dd4452](https://github.com/babel/babel/pull/14985/files#diff-6427eed7e95cfa97e5ed7572605894129bb4816c6fca74c8e335188071dd4452) ![](./images/babel-plugin-transform-destructuring.util.ts.png) ## packages\7.20\node_modules\@babel\plugin-transform-destructuring\lib\index.js ## ### buildObjectExcludingKeys 方法 ### #### [Spec Compliance] 前 #### let value; if (keys.length === 0) { const extendsHelper = useBuiltIns ? core.types.memberExpression(core.types.identifier("Object"), core.types.identifier("assign")) : addHelper("extends"); value = core.types.callExpression(extendsHelper, [core.types.objectExpression([]), core.types.cloneNode(objRef)]); } #### [Spec Compliance] 后 #### let value; if (keys.length === 0) { const extendsHelper = useBuiltIns ? core.types.memberExpression(core.types.identifier("Object"), core.types.identifier("assign")) : addHelper("extends"); value = core.types.callExpression(extendsHelper, [core.types.objectExpression([]), core.types.sequenceExpression([core.types.callExpression(addHelper("objectDestructuringEmpty"), [core.types.cloneNode(objRef)]), core.types.cloneNode(objRef)])]); } "@babel/plugin-transform-destructuring": "7.18.13",