Я понимаю, что с использованием синтаксиса 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
...
}
Object.assign
- person VLAZ   schedule 08.05.2018