gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:30:08 27 4
gpt4 key购买 nike

我理解,使用 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
...
}

最佳答案

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

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();

关于javascript - 将具有可选/默认属性的对象作为参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50237260/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com