-1

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

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

3 回答 3

2

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 }
    : {},
}
于 2018-05-07T22:14:08.437 回答
0

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

于 2018-05-07T22:08:41.113 回答
0

您可以使用三元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
    }); 
于 2018-05-07T22:10:58.273 回答