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})
在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})