Cal*_*Jay 2 javascript ecmascript-6
在ES6/ES2015中,我可以使用Object destructuring从作为函数参数传递的对象中提取字段:
function userId({id}) {
return id;
}
var user = {
id: 42,
};
console.log("userId: " + userId(user)); // "userId: 42"
Run Code Online (Sandbox Code Playgroud)
在上述例子中,是id在变量设定userId功能相当于通过设置它var,const或let?
那么以下哪个是等效函数:
瓦尔
function userId(user) {
var id = user.id
return id;
}
Run Code Online (Sandbox Code Playgroud)
让
function userId(user) {
let id = user.id
return id;
}
Run Code Online (Sandbox Code Playgroud)
常量
function userId(user) {
const id = user.id
return id;
}
Run Code Online (Sandbox Code Playgroud)
(上面链接的MDN页面的示例函数,跳转到"从作为函数参数传递的对象中拉出字段")
使用解构声明变量使用与在同一位置声明普通变量相同的范围.所以,如果你这样做:
let {id} = {id: 42};
Run Code Online (Sandbox Code Playgroud)
那么这是一个let约束力,如果你这样做:
var {id} = {id: 42};
Run Code Online (Sandbox Code Playgroud)
然后它是一个var约束力.
函数参数就像var绑定一样,因为它们的作用域是整个函数,而它们不是const.它们也像let绑定一样,因为它们的范围是当前块,这是整个函数体.