JavaScript(ES6):命名参数和默认值

时间:2018-05-24 14:05:16

标签: javascript ecmascript-6

来自Python并且非常喜欢设置命名参数和默认值的方式 - 现在似乎ES6允许我做类似的事情。但我不明白为什么这最后一次电话会破裂:

fun = ({first=1, last=1}) => (1*first+2*last)

console.log("-----------")

console.log( fun({first:1, last:2}) )

console.log("-----------")

console.log( fun({last:1, first:2}) )

console.log("-----------")

console.log( fun() ) // Breaks

2 个答案:

答案 0 :(得分:15)

您需要一个默认对象。

var fun = ({ first = 1, last = 1 } = {}) => 1 * first + 2 * last;
//                                 ^^^^

console.log(fun({ first: 1, last: 2 }));
console.log(fun({ last: 1, first: 2 }));
console.log(fun());

答案 1 :(得分:1)

因为你需要一个可以解构的对象:

fun({})