变换对象回放:在排除绑定时松动模式下计算键任务被使用
披露: 这个问题的说明是在大赦国际的协助下起草的,并由我审查。
输入
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? 函数省略(obj, spec) { const { [spec.key]:已删除,. rest = obj; 返回休息; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
省略({ a: 1; b: 2};{ key: "a"});
QQ 配置
复制件有: babel/[email protected];`@babel/[email protected]:
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么?
插件 : ['require ("@babel/plugin- transform-object-rest-spread"), {
松:没错,
使用BuiltIns: 真实,
[ ]它还通过网络“babel-preset-expo”复制;原下游报告:expo/expo#49232.
实际产出
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? 函数省略(obj, spec) { var spec$key; (原始内容存档于2018-09-29) (中文(中国大陆) ). 休息 = 对象没有财产 欧杰, [spec$key].map ( to PropertyKey) (英语). (三) 返回休息; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
`spec$key'被宣布,但从未分配,所以其余的帮助者不包括`未定义',返回`a: 1,b: 2'。
预期行为
计算出的密钥在被排除列表使用之前必须保留被分配,所以结果为:QQ b: 2.Q.
当提及`删除'的约束时,Babel发出必要的内在记忆:
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么?
const { [ spec$key = spec.key]:已删除 }= obj,
剩余 = Object withoutPropertysLoose(obj, [ spec$key].map( toPropertyKey) ) ;根原因
有了松散的/ " 纯洁的 " 优化,删除未用ExcledKeys() ' 就可以去掉计算出来的ObjectProperty',因为删除 ' 没有提及。 为其余排除而插入的计算出的关键转让位于该财产之内并随该财产而去除,但创建ObjectRest ()'已经在排除阵列中释放出临时标识符。
当密钥包含生成的记忆性转让(或以其他方式保留该转让)时,狭义的固定应保留零参照计算的财产,同时保留用于普通静态密钥的未用密钥去除。
环境
- 马可斯
- 节点26.5.0
- @babel/core 7.29.7 (中文(简体) ).
- @babel/plugin-transform-object-rest-spread-7.29.7 (中文(简体) )
内容来源: babel/babel