Я понимаю, что с использованием синтаксиса ES6 можно создать функцию, которая принимает объект в качестве параметра, и этот параметр может иметь значение по умолчанию, например:
function exampleFunction(objParam = {val1: 1, val2: 2}) {
//...
}
Если я звоню exampleFunction()
, objParam
получает значение по умолчанию. Однако, если я позвоню exampleFunction({val1: 3})
, objParam.val2
будет undefined
. Это имеет смысл, потому что по умолчанию не применяется. Можно ли каким-то образом убедиться, что objParam.val2
имеет значение, используя обозначение ES6? Я знаю, что могу добавить проверки в функцию, но это вносит несоответствие в код, и я бы предпочел этого не делать.
Редактировать: Чтобы уточнить, вот лучший пример:
function exampleFunction(param = 0, objParam = {val1: 1, val2: 2}) {
return objParam.val1;
}
exampleFunction(); // Returns 1 (this is good)
exampleFunction(1, {val1: 2}); // Returns 2 (this is good)
exampleFunction(1, {val2: 3}); // Returns undefined (I want it to return 1)
А вот то, что у меня сейчас есть, оно работает, но несколько не элегантно:
function exampleFunction(param = 0, objParam = {val1: 1, val2: 2}) {
if(objParam.val1 === undefined) objParam.val1 = 1
if(objParam.val2 === undefined) objParam.val2 = 2
...
}