E_J*_*ovi 4 javascript ecmascript-6
我注意到ES6解构导入可以这样实现:
foo.js
export default () => {
return {
a: 'b'
}
}
Run Code Online (Sandbox Code Playgroud)
index.js
import foo from './foo';
export default foo;
export const bar = foo();
Run Code Online (Sandbox Code Playgroud)
然后,我可以将模块用于:
import foo, { bar } from 'my-module';
Run Code Online (Sandbox Code Playgroud)
但是,当我使用from的“深度解构”导入时my-module,它失败并显示:
import foo, { bar: { a } } from 'my-module';
Run Code Online (Sandbox Code Playgroud)
ES6似乎已经实现了以上语法,但是我该如何使用呢?
该ImportClause的import是不一样的解构。它们确实有一些语法上的相似性,但是如果您仔细阅读规范import,就会发现它从不引用通常的解构结构,例如DestructuringAssignmentTarget或BindingPattern。
请记住,导入会在模块之间创建绑定,但是解构分配会将值从源复制到目标。使用您想象中的销毁导入,如果bar源模块中更改的值会改变导入的内容a吗?(毕竟import { bar } from 'my-module';,如果使用进行了bar更改my-module,则导入的内容将bar反映该更改。)或者解构导入会在某个时间点复制bar.ato 的值a?如果是这样,什么时间点?
你明白了。他们只是不同的野兽。
当然,您可以导入然后进行销毁:
import foo, { bar } from 'my-module';
let { a } = bar;
Run Code Online (Sandbox Code Playgroud)
...但是我确定你知道。:-)
| 归档时间: |
|
| 查看次数: |
777 次 |
| 最近记录: |