我想在我的JavaScript函数中使用命名参数(通过对象文字进行模拟)以简化可读性。当我明确传递参数时,我编写的代码可以正常工作,但是我在尝试设置默认值时遇到了麻烦,因此不仅可以通过myFunction({someBoolean:true})或myFunction来调用我的函数()表示默认为someBoolean:false。

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: '...'})

09-25 17:45