是否可以使用三元赋值来解构函数参数?

时间:2016-10-14 20:10:30

标签: javascript ecmascript-6

我希望能够用三元赋值来构造函数参数。

const fn = (size ? 'large' : 'small') => [
  `lots${size}`,
  `of${size}`,
  `values${size}`,
];

fn(true); // imageLarge
fn(); // imageSmall

4 个答案:

答案 0 :(得分:2)

不,您可以将其移到模板文字内。

const fn = size => `image${size ? 'large' : 'small'}`;

使用案例并保留size

const fn = size => ((x = size ? 'large' : 'small') => [
    `lots${x}`,
    `of${x}`,
    `values${x}`
])();

console.log(fn(true));
console.log(fn());

答案 1 :(得分:2)

您需要在Template literal内移动三元运算符。

const fn = (size) => `image${size ? 'large' : 'small'}`;

console.log(fn(true)); // imageLarge
console.log(fn()); // imageSmall

更新:在第二种情况下,更新函数中的大小值。

const fn = (size) => size = size ? 'large' : 'small', [
  `lots${size}`,
  `of${size}`,
  `values${size}`,
];

console.log(fn(true));
console.log(fn());

答案 2 :(得分:1)

您可以使用默认参数执行此操作:



const fn = (isLarge, size = isLarge ? 'large' : 'small') => [
  `lots${size}`,
  `of${size}`,
  `values${size}`,
];

console.log(fn(true));

console.log(fn(false));




答案 3 :(得分:0)

不,如果你不想重复三元,你需要在函数内设置一个新变量。

const fn = islarge => {
  var size = islarge ? 'large' : 'small';
  return [
    `lots${size}`,
    `of${size}`,
    `values${size}`,
  ];
};

console.log(fn(true));
console.log(fn());