Dio*_*ela 5 javascript javascript-objects ecmascript-6
这两个代码示例之间有什么区别(除了语法之外)?
var user = {
name: 'Diego',
age: 25
}
var {name} = user;
console.log(name); // Diego
Run Code Online (Sandbox Code Playgroud)
var user = {
name: 'Diego',
age: 25
}
var name = user.name;
console.log(name); // Diego
Run Code Online (Sandbox Code Playgroud)
两个示例都指定了相同的值.我没有得到使用其中任何一个的差异或优势/优势.
mel*_*ene 12
让我们将它扩展到多个属性:
var {foo, bar, baz} = user;
Run Code Online (Sandbox Code Playgroud)
在传统语法中,这将是:
var foo = user.foo,
bar = user.bar,
baz = user.baz;
Run Code Online (Sandbox Code Playgroud)
因此,对于每个属性,我们必须重复我们想要访问的对象(user)和属性的名称foo = ... .foo.新语法可以更轻松地重复自己.
如果对象尚未存储在变量中,则存在另一个差异:
var {foo, bar, baz} = getUser();
Run Code Online (Sandbox Code Playgroud)
现在我们不能做到
var foo = getUser().foo,
bar = getUser().bar,
baz = getUser().baz;
Run Code Online (Sandbox Code Playgroud)
因为每次调用getUser可能会做不同的事情(由于副作用)或只是效率低下(因为我们正在重复工作).我们必须创建一个新的局部变量来存储对象,只是为了初始化我们真正关心的三个变量.
没有什么有效的区别,但解构很方便:
var user = {
name: 'Diego',
age: 25
}
var {name, age} = user;
Run Code Online (Sandbox Code Playgroud)
这在一个语句中声明并初始化了name和 ,age而没有多余地提及属性名称。
| 归档时间: |
|
| 查看次数: |
384 次 |
| 最近记录: |