In ES6/ES2015 I can use Object destructuring to pull fields from objects passed as function parameters:
function userId({id}) {
return id;
}
var user = {
id: 42,
};
console.log("userId: " + userId(user)); // "userId: 42"
In the above example, is the id
variable set in the userId
function equivalent to setting it via var
, const
, or let
?
So which of the below is the equivalent function:
Var
function userId(user) {
var id = user.id
return id;
}
Let
function userId(user) {
let id = user.id
return id;
}
Const
function userId(user) {
const id = user.id
return id;
}
(Example function from MDN page linked above, jump to "Pulling fields from objects passed as function parameter)
Declaring variables with destructuring uses the same scope as if you'd declared ordinary variables in the same position. So if you do:
let {id} = {id: 42};
then it's a let
binding, if you do:
var {id} = {id: 42};
then it's a var
binding.
Function parameters are like var
bindings, since they're scoped to the entire function and they're not const
. They're also like let
bindings because they're scoped to the current block, which is the entire function body.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With