JavaScript禁用默认参数

时间:2015-11-13 13:32:41

标签: javascript javascriptcore default-parameters destructuring

假设我想在集合数组中处理一些 x 对象属性。但是集合可能包含没有这些属性的对象,甚至包含 undefined 。例如

let array = [
  {x: 1},
  {x: 2},
  {},
  {x: 4},
  undefined
]

这个想法是用默认参数保护我自己免受这种边缘情况的影响。设为 0 。我试图解决这个问题

array.map(({x: x = 0}) => process(x))

但它在未定义上失败了。有没有办法用默认参数和解构来解决这个问题,而无需在map函数中编写检查/设置代码?

2 个答案:

答案 0 :(得分:2)

您可以为默认对象指定默认值

array.map(({x : x = 0} = 0) => process(x));

答案 1 :(得分:1)

您可以在.filter之前使用.map来清除所有null值,例如0''false,{{1 }}

array = array
    .filter((el) => el)
    .map(({x: x = 0}) => process(x));

falsy

Example中有很好的描述

  

默认函数参数允许使用默认值初始化形式参数(如果没有值或未定义)   过去了。

所以null是值。所以如果你将null传递给函数默认值,则不使用,例如

function test(x = 10) {
    console.log(x);
}

test(undefined); // 10
test();          // 10
test(null);      // null
test(0);         // 0
test('');        // ''

MDN