将带有可选/默认属性的对象作为参数的函数?

伊恩

我知道,使用ES6语法,可以创建一个将对象作为参数的函数,并且该参数可以具有默认值,如下所示:

function exampleFunction(objParam = {val1: 1, val2: 2}) {
    //...
}

如果我呼叫exampleFunction()objParam则提供默认值。但是,如果我打电话给exampleFunction({val1: 3})objParam.val2undefined这很有意义,因为未应用默认设置。有什么方法可以objParam.val2使用ES6表示法确保它具有值?我知道我可以在函数中添加检查,但这会导致代码不一致,而我宁愿不这样做。

编辑:为了澄清,这是一个更好的示例:

function exampleFunction(param = 0, objParam = {val1: 1, val2: 2}) {
    return objParam.val1;
}
exampleFunction(); // Returns 1 (this is good)
exampleFunction(1, {val1: 2}); // Returns 2 (this is good)
exampleFunction(1, {val2: 3}); // Returns undefined (I want it to return 1)

这是我目前拥有的东西,它确实有效,但有点不雅致:

function exampleFunction(param = 0, objParam = {val1: 1, val2: 2}) {
    if(objParam.val1 === undefined) objParam.val1 = 1
    if(objParam.val2 === undefined) objParam.val2 = 2
    ...
}
MichałPerłakowski

您可以在参数中使用解构以提供默认值:

function exampleFunction({val1 = 1, val2 = 2} = {}) {
  console.log(val1, val2);
}
exampleFunction({val1: 5});
exampleFunction();

如果要将参数保留为对象,可以使用Object.assign

function exampleFunction(origParams = {}) {
  const objParam = Object.assign({ val1: 1, val2: 2 }, origParams);
  console.log(objParam.val1, objParam.val2);
}
exampleFunction({val1: 5});
exampleFunction();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将带有三个参数的类变量作为参数传递给构造函数

Javascript-以可选参数作为对象的函数?

scala:可选的默认参数,作为其他参数的函数

如何将带有2个参数的函数作为参数传递给函数?

Swift-将Nil作为带有可选参数的泛型函数中的参数

将带有可选模板类型参数的函数传递给类构造函数,并将其分配给方法

Julia:函数带有Vector类型的可选参数,但默认为null?

React / Javascript:通过带有可选参数作为Prop的函数

如何设置带有可选属性的复杂json对象作为可选对象?

是否可以将带有参数的函数作为prop传递,然后将该函数作为prop引用?

是否可以将带有引用的函数作为提供自有值的闭包参数传递?

默认参数vs std ::可选作为参数vs函数重载

Vue不会将带有数据属性的对象作为prop传递到组件中

如何将带有参数作为参数的函数传递给Python中的另一个函数?

如何或可以将带有参数作为参数的函数传递给lua中的函数?

将带有参数的函数作为参数传递并返回通用类型

带有可选参数的Varargs函数

将带有可变参数构造函数的对象放入地图中

是否可以将带有vars的json对象作为angularjs指令参数传递?

作为函数的Python属性的默认参数

编写带有可选参数的函数

带有对象指针作为参数的C ++复制构造函数

将带有可选参数的范围添加到路由

带有可选参数的 R 包装函数

带有可选参数的构造函数

Python unittest 模拟带有可选默认参数的函数,该参数可能未提供

如何为作为函数参数传递的对象的所有未定义属性分配默认值?

如何在 TypeScript 中将对象作为参数传递给带有可选对象字段的函数?

将带有 `...` 的可选参数传递给多个函数;控制参数匹配?