Пропустить / пропустить параметр со значением по умолчанию при вызове функции в JS - PullRequest
1 голос
/ 30 октября 2019

В 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 возможны и другие случаи, но я не могу найти способ добиться последнего

Ответы [ 2 ]

2 голосов
/ 30 октября 2019

Этого можно добиться путем разрушения объекта:

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

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

1 голос
/ 30 октября 2019

Вы не можете пропустить параметр и вызывать его по имени. Пропуск в js означал бы пропуск неопределенного значения, поэтому если бы ваш пост был функцией с тремя аргументами, вы бы сделали

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

, чтобы второй параметр принял значение по умолчанию

Однако вы можете сделать следующее:взять объект в качестве параметра, деструктурировать и присвоить значения по умолчанию:

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

Затем вызвать функцию, которую вы сделаете post({url:'http://whatever',body:'somebody'});

...