如何为作为函数参数传递的对象的所有未定义属性分配默认值?
How can I assign default values to all undefined properties of an object being passed as a function parameter?
我有一个函数接受一个对象作为参数。对象的 属性 默认值已确定。我希望给定参数的缺失条目分配相应的默认值。但是到目前为止,我的函数参数只有 returns 它在函数调用中给出的条目。
我的尝试
function x(obj1 = {foo: 'bar', fizz: 'buzz'}) {
console.log(obj1);
}
x({foo: 10}); // {foo: 10}
function y(obj2 = ({foo: 'bar'}, {fizz: 'buzz'})) {
console.log(obj2);
}
y({foo: 20}); // {foo: 20}
function z(obj3 = ({foo: foo} = {foo: 'bar'}, {fizz: fizz} = {fizz: 'buzz'})) {
console.log(obj3)
}
z({foo: 30}); // {foo: 30}
我的目标
function f(/* <{foo: 'bar', fizz: 'buzz'}> */) {
console.log(/* <obj> */);
}
f({foo: 40}); // {foo: 40, fizz: 'buzz'}
在函数参数中使用Object destructuring
。
function test({foo = 'bar', fizz = 'buzz'}) {
console.log({foo, fizz});
}
test({foo: 40});
test({foo: 50, fizz: "abcde"});
尝试传播运算符:
function x(obj1 = {}) {
let defaultObj = {foo: 'bar', fizz: 'buzz',...obj1};
console.log(defaultObj);
}
x({foo: 10});
这是如何工作的:let x = {a: 1, b: 1, a:2}
将导致 x = { a: 2 , b : 1}
,这意味着以后定义的属性将覆盖之前定义的属性(使用相同的键)。
我有一个函数接受一个对象作为参数。对象的 属性 默认值已确定。我希望给定参数的缺失条目分配相应的默认值。但是到目前为止,我的函数参数只有 returns 它在函数调用中给出的条目。
我的尝试
function x(obj1 = {foo: 'bar', fizz: 'buzz'}) {
console.log(obj1);
}
x({foo: 10}); // {foo: 10}
function y(obj2 = ({foo: 'bar'}, {fizz: 'buzz'})) {
console.log(obj2);
}
y({foo: 20}); // {foo: 20}
function z(obj3 = ({foo: foo} = {foo: 'bar'}, {fizz: fizz} = {fizz: 'buzz'})) {
console.log(obj3)
}
z({foo: 30}); // {foo: 30}
我的目标
function f(/* <{foo: 'bar', fizz: 'buzz'}> */) {
console.log(/* <obj> */);
}
f({foo: 40}); // {foo: 40, fizz: 'buzz'}
在函数参数中使用Object destructuring
。
function test({foo = 'bar', fizz = 'buzz'}) {
console.log({foo, fizz});
}
test({foo: 40});
test({foo: 50, fizz: "abcde"});
尝试传播运算符:
function x(obj1 = {}) {
let defaultObj = {foo: 'bar', fizz: 'buzz',...obj1};
console.log(defaultObj);
}
x({foo: 10});
这是如何工作的:let x = {a: 1, b: 1, a:2}
将导致 x = { a: 2 , b : 1}
,这意味着以后定义的属性将覆盖之前定义的属性(使用相同的键)。