【问题标题】:Omit/Skip a parameter with default value while calling a function in JS在JS中调用函数时省略/跳过具有默认值的参数
【发布时间】:2020-02-25 20:26:33
【问题描述】:

在 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 中是可能的,但我找不到实现最后一个的方法

【问题讨论】:

标签: javascript python function parameters optional-parameters


【解决方案1】:

你不能省略一个参数并通过它的名字来调用它。 在 js 中省略意味着传递 undefined 所以如果你的帖子是一个 3 参数函数,你会这样做

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

让第二个参数取默认值

但是你可以做的是取一个对象作为参数,解构并分配默认值:

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

然后调用你会做的函数post({url:'http://whatever',body:'somebody'});

【讨论】:

  • 所以JS中不直接支持查询!但这是不错的替代解决方案...谢谢
【解决方案2】:

您可以通过对象破坏来实现:

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

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

【讨论】:

    猜你喜欢
    • 2014-10-03
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多