Javascript Object Destructure赋值是使用const,let还是var?

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,constlet

那么以下哪个是等效函数:

瓦尔

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页面的示例函数,跳转到"从作为函数参数传递的对象中拉出字段")

Bar*_*mar 6

使用解构声明变量使用与在同一位置声明普通变量相同的范围.所以,如果你这样做:

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绑定一样,因为它们的范围是当前块,这是整个函数体.