JavaScript nasted 默认参数
JavaScript nasted default parameters
假设我想处理集合 array 中的一些 属性 x 个对象。但是集合可能包含没有这样 属性 甚至 undefined 的对象。例如
let array = [
{x: 1},
{x: 2},
{},
{x: 4},
undefined
]
这个想法是用默认参数保护我自己免受这种边缘情况的影响。让它成为 0。我试图解决这个问题
array.map(({x: x = 0}) => process(x))
但它在 未定义 上失败了。有什么方法可以使用默认参数和解构来解决这个问题,而无需在 map 函数中编写 check/set 代码?
您可以在 .map
之前使用 .filter
以清除所有 falsy
值,例如 null
、0
、''
、false
array = array
.filter((el) => el)
.map(({x: x = 0}) => process(x));
在MDN
中有很好的描述
Default function parameters allow formal parameters to be initialized with default values if no value or undefined is
passed.
所以 null
是值。所以如果你将 null
传递给函数默认值不使用,例如
function test(x = 10) {
console.log(x);
}
test(undefined); // 10
test(); // 10
test(null); // null
test(0); // 0
test(''); // ''
你可以给默认对象一个默认值
array.map(({x : x = 0} = 0) => process(x));
假设我想处理集合 array 中的一些 属性 x 个对象。但是集合可能包含没有这样 属性 甚至 undefined 的对象。例如
let array = [
{x: 1},
{x: 2},
{},
{x: 4},
undefined
]
这个想法是用默认参数保护我自己免受这种边缘情况的影响。让它成为 0。我试图解决这个问题
array.map(({x: x = 0}) => process(x))
但它在 未定义 上失败了。有什么方法可以使用默认参数和解构来解决这个问题,而无需在 map 函数中编写 check/set 代码?
您可以在 .map
之前使用 .filter
以清除所有 falsy
值,例如 null
、0
、''
、false
array = array
.filter((el) => el)
.map(({x: x = 0}) => process(x));
在MDN
中有很好的描述
Default function parameters allow formal parameters to be initialized with default values if no value or undefined is passed.
所以 null
是值。所以如果你将 null
传递给函数默认值不使用,例如
function test(x = 10) {
console.log(x);
}
test(undefined); // 10
test(); // 10
test(null); // null
test(0); // 0
test(''); // ''
你可以给默认对象一个默认值
array.map(({x : x = 0} = 0) => process(x));