我希望能夠用三元賦值來解構函數參數。是否可以使用三元賦值來解構函數參數?
const fn = (size ? 'large' : 'small') => [
`lots${size}`,
`of${size}`,
`values${size}`,
];
fn(true); // imageLarge
fn(); // imageSmall
我希望能夠用三元賦值來解構函數參數。是否可以使用三元賦值來解構函數參數?
const fn = (size ? 'large' : 'small') => [
`lots${size}`,
`of${size}`,
`values${size}`,
];
fn(true); // imageLarge
fn(); // imageSmall
你可以做,使用默認參數:
const fn = (isLarge, size = isLarge ? 'large' : 'small') => [
`lots${size}`,
`of${size}`,
`values${size}`,
];
console.log(fn(true));
console.log(fn(false));
雖然有效,但使用它並不(非常)安全,因爲第二個參數的隨機內容會破壞函數的意圖。 –
事實上,你可以使用類似lodash的['_.ary()'](https://lodash.com/docs/4.16.4#ary)來限制允許的參數數量。 –
這很不好,但很好,很好!沒有意識到這項任務是進步的。我不會在產品中使用這段代碼,但很有趣 –
不,您可以將其移動到模板文字中。
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());
更新了上面的用例,我想三元函數在函數中被重用 –
您需要將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());
更新了上面的用例,我想三元函數在函數中被重用 –
聰明地使用了逗號運算符。我不得不刪除我的答案的一部分,說它不能作爲一個單一的線程完成。 :) – Barmar
你不需要arg周圍的parens,當它是一個,滴2個字符! –
不,你需要設置函數內一個新的變量,如果你不想重複三元。
const fn = islarge => {
var size = islarge ? 'large' : 'small';
return [
`lots${size}`,
`of${size}`,
`values${size}`,
];
};
console.log(fn(true));
console.log(fn());
這不是 '解構',甚至不是默認爲一定的價值,你只是有一個函數根據參數返回一些值*。 – Azamantes