如何为JavaScript中通过对象文本模拟的命名函数参数设置默认值?
我希望在JavaScript函数中使用命名参数(通过对象文本模拟),以便于可读性。当我显式地传递参数时,我编写的代码工作得很好,但是我在尝试设置默认值时遇到了问题,因此我的函数不仅可以通过as myFunction({someBoolean:true})或as myFunction()调用,这意味着默认值为someBoolean:false如何为JavaScript中通过对象文本模拟的命名函数参数设置默认值?,javascript,object-literal,named-parameters,default-parameters,Javascript,Object Literal,Named Parameters,Default Parameters,我希望在JavaScript函数中使用命名参数(通过对象文本模拟),以便于可读性。当我显式地传递参数时,我编写的代码工作得很好,但是我在尝试设置默认值时遇到了问题,因此我的函数不仅可以通过as myFunction({someBoolean:true})或as myFunction()调用,这意味着默认值为someBoolean:false myFunction: function({myArgs}){ myArgs.someBoolean = myArgs.someBoolean ||
myFunction: function({myArgs}){
myArgs.someBoolean = myArgs.someBoolean || false;
if (myArgs.someBoolean) {
[do stuff]
}
[do other stuff]
},
当我调用myFunction({someBoolean:true})时,这很好,但当我调用myFunction()时,我得到“未捕获的TypeError:无法读取未定义的属性'someBoolean'
提前谢谢 注意,如果您需要多个默认参数,并且提供了一些参数,那么前面的答案将不起作用: 执行
myFunction({otherArg:'hello'})
不一定会将myArgs.someBoolean
设置为false
相反,您应该将其更改为以下更改:
myFunction: function(myArgs){ // Switch to regular argument vs {myArgs}
myArgs = myArgs || {}; // Make sure it provided
myArgs.someBoolean = myArgs.someBoolean || false;
myArgs.otherArg = myArgs.otherArg || 'defaultValue'
if (myArgs.someBoolean) {
[do stuff]
}
[do other stuff]
},
然后可以使用以下命令调用此函数:something.myFunction({someBoolean:true,otherArg:'…'})
用于对象解构,这样当传递具有myArgs
属性的对象时,可以在函数内使用myArgs
作为变量。例如:
function x({myArgs}){
console.log(myArgs);
}
x({myArgs: 5}); // logs 5
但是,您访问的布尔值类似于myArgs
(myArgs.someBoolean
)的对象属性。那么您应该改用这个:
function x(myArgs = {someBoolean: false}){
console.log(myArgs.someBoolean);
}
x({someBoolean: true}); // logs true
x(); // logs false
这与你的情况相符。如果要直接使用someBoolean
,请使用以下命令:
function x({someBoolean} = {someBoolean: false}){
console.log(someBoolean);
}
x({someBoolean: true}); // logs true
x(); // logs false
另一个选择是
function x({someBoolean = false, someOtherBoolean = true} = {}){
console.log(someBoolean);
}
x({someBoolean: true}); // logs true
x(); // logs false
.正确的方法是 函数f({someBoolean=false}={}){ console.log(someBoolean) } f();//假的 f({});//假的 f({someBoolean:true});//正确
function x({someBoolean = false, someOtherBoolean = true} = {}){
console.log(someBoolean);
}
x({someBoolean: true}); // logs true
x(); // logs false
myFunction: function({someBoolean = false}){
if (someBoolean) {
[do stuff]
}
[do other stuff]
},