我可以跳过对象声明中的属性名称吗?

时间:2018-08-23 11:23:25

标签: javascript ecmascript-6

hapi auth tutorial网页上,我找到了以下代码:

const validate = async (request, username, password) => {
    const user = users[username];
    if (!user) {
        return { credentials: null, isValid: false };
    }

    const isValid = await Bcrypt.compare(password, user.password);
    const credentials = { id: user.id, name: user.name };

    return { isValid, credentials }; // <=== Is this a valid js statement?
};

我的问题是关于return语句的。那有效吗?什么意思?

2 个答案:

答案 0 :(得分:3)

根据新的ES6速记语法

return { isValid, credentials };

翻译为

return { isValid: isValid, credentials:credentials };

有效

答案 1 :(得分:3)

是的,您可以跳过属性名称,幸运的是,ECMAScript 2015允许您简单地在对象内部传递变量,该属性将自动变为变量名称。

所以...

var1 = true;
var2 = false;

object = { var1, var2 }; // { var1: true, var2: false }

您实际上正在返回一个“匿名”变量(在这种情况下为对象),该变量当时不是部分变量,但在返回时在运行时实例化。

这也称为shorthand property names

相关问题