Omit/Skip JS调用函数时参数有默认值

Omit/Skip a parameter with default value while calling a function in JS

在python中我们可以在函数调用中省略带有默认值的参数。例如

def post(url, params={}, body={}):
    print()
    print(url)
    print(params)
    print(body)

post("http://localhost/users")

post("http://localhost/users", {"firstname": "John", "lastname": "Doe"})           # Skipped last argument (possible in JS as well)
post("http://localhost/users", params={"firstname": "John", "lastname": "Doe"})    # same as above

post("http://localhost", body={"email": "user@email.com", "password": "secret"})   # Skipped 2nd argument by passing last one with name (i.e. "body")

我可以在 JS 中实现吗?就像省略第二个参数并传递最后一个参数一样。 (与最后一种情况一样)。其他情况在 JS 中是可能的,但我找不到实现最后一个的方法

您不能省略参数并通过名称调用它。 在 js 中省略将意味着传递 undefined 所以如果你的 post 是一个 3 参数函数你会做

post('http://whatever', undefined,'somebody')

使第二个参数取默认值

不过你能做的就是把一个对象作为参数,解构并赋默认值:

function post({url,params={},body={}}){
}

然后调用您要执行的函数 post({url:'http://whatever',body:'somebody'});

您可以通过对象销毁来实现:

function post({ param1, param2 = "optional default value", param3 , param4}){
 /// definitions
}

let param3 = 'abc';
post({param1: 'abc', param3})