Es6:解构的简短版本
Es6: Short version for destructuring
有没有办法把下面的代码写得短一点?
const { user } = JWT.verify(req.params.token, keys.secretOrKey);
const { email } = user;
我只需要来自 JWT 的 email
属性。
从JWT.verify()
返回的数据是一个对象:
user: {
name: 'the name',
email: 'email@address.com',
...
}
解构赋值很厉害:
// shim for example
const JWT = { verify: () => ({
user: {
email: 'me@me.me',
name: 'snek',
},
}) };
///////////////////
const { user: { email } } = JWT.verify();
console.log(email);
注意这里没有声明user
。
在此处查看更多内容:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
是的,你可以只写
const {user:{email}} = JWT.verify(req.params.token, keys.secretOrKey);
let test = { user: {
name: 'the name',
email: 'email@address.com'
}}
const {user:{email}} = test;
console.log("user",typeof user);
console.log("email",email)
可以看到,只设置了email
,未定义user
。
但请注意,这仅在定义了 user
时有效,否则会引发错误。
您还可以为 user
对象设置默认值,如下所示:
let test = {/** user: {
name: 'the name',
email: 'email@address.com'
}**/}
const {user:{email}={}} = test;
console.log("user",typeof user);
console.log("email",email)
这样它就不会抛出错误,如果 user
没有被定义
如评论中所述:
const myFunction = {
user: {
name: 'the name',
email: 'email@address.com'
}
}
const {
email
} = myFunction.user
console.log(email)
有没有办法把下面的代码写得短一点?
const { user } = JWT.verify(req.params.token, keys.secretOrKey);
const { email } = user;
我只需要来自 JWT 的 email
属性。
从JWT.verify()
返回的数据是一个对象:
user: {
name: 'the name',
email: 'email@address.com',
...
}
解构赋值很厉害:
// shim for example
const JWT = { verify: () => ({
user: {
email: 'me@me.me',
name: 'snek',
},
}) };
///////////////////
const { user: { email } } = JWT.verify();
console.log(email);
注意这里没有声明user
。
在此处查看更多内容:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
是的,你可以只写
const {user:{email}} = JWT.verify(req.params.token, keys.secretOrKey);
let test = { user: {
name: 'the name',
email: 'email@address.com'
}}
const {user:{email}} = test;
console.log("user",typeof user);
console.log("email",email)
可以看到,只设置了email
,未定义user
。
但请注意,这仅在定义了 user
时有效,否则会引发错误。
您还可以为 user
对象设置默认值,如下所示:
let test = {/** user: {
name: 'the name',
email: 'email@address.com'
}**/}
const {user:{email}={}} = test;
console.log("user",typeof user);
console.log("email",email)
这样它就不会抛出错误,如果 user
没有被定义
如评论中所述:
const myFunction = {
user: {
name: 'the name',
email: 'email@address.com'
}
}
const {
email
} = myFunction.user
console.log(email)