NodeJS:在对象中创建条件 属性 的方法比自调用函数更短? (ES5 或 ES6)
NodeJS: shorter way to create a conditional property in an object than self-invoked function? (either ES5 or 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;
})());
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
});
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 }
: {},
}
有没有更短的表达方式? (ES5 或 ES6)
res.cookie('abc', 'xyz', (function(){
var obj = {maxAge: 900000, httpOnly: true };
if (process.env.NODE_ENV==="production"){
obj.secure = true;
}
return obj;
})());
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
});
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 }
: {},
}