繁体   English   中英

JavaScript禁用默认参数

[英]JavaScript nasted default parameters

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

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

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

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

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

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

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

你可以在.map之前使用.filter来清除所有的falsy值,如null0''false

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

Example

MDN有很好的描述

如果没有传递值或未定义,则默认函数参数允许使用默认值初始化形式参数。

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

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

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

Example

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM