NodeJS:在对象中创建条件属性的方法比自调用函数更短?(ES5 或 ES6)



有没有更短的方式来表达以下内容?(ES5 或 ES6(

res.cookie('abc', 'xyz', (function(){
var obj = {maxAge: 900000, httpOnly: true };
if (process.env.NODE_ENV==="production"){
obj.secure = true;
}
return obj;
})());

ES6 提供了Object.assign方法,你可以像这样使用它:

var obj = Object.assign(
{
maxAge: 900000,
httpOnly: true,
},
process.env.NODE_ENV === "production"
? { secure: true }
: {}
)

这将确保如果环境不是生产环境,则最终对象中甚至不存在键secure。如果您同意键存在,但值为false,那么:

var obj = {
maxAge: 900000,
httpOnly: true,
secure: process.env.NODE_ENV === "production",
}

就足够了。


在更新版本的 ECMAScript 中,您可以使用...运算符进行对象解构。因此,您可以将第一个代码段转换为更简洁的版本:

var obj = {
maxAge: 900000,
httpOnly: true,
...process.env.NODE_ENV === "production"
? { secure: true }
: {},
}

res.cookie('abc', 'xyz', {
maxAge: 900000,
httpOnly: true,
secure: process.env.NODE_ENV === "production"
});

您可以使用三元 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator 因为三元是表达式。

res.cookie('abc', 'xyz', {
maxAge: 9 * 100 * 1000,
httpOnly:true,
secure: process.env.NODE_ENV==="production" ? true : undefined
}); 

最新更新