В основном, в коде, который я редактирую, есть функция, которая получает аргумент объекта, который имеет 2 возможные пары ключ / значение, но только один из них используется в зависимости от некоторых условий:
Это функция, которая разрушаетfoobar
в отдельные ключи:
function someFunction({ foo, bar }) {
console.log(foo); // can be either { foo: "123"} or undefined
console.log(bar); // can be either { bar: "321"} or undefined
}
Здесь мы передаем аргумент foobar
someFunction()
:
function anotherFunction(foobar) {
console.log(foobar); // can be either { foo: "123"} or { bar: "321"}
someFunction(foobar);
}
Здесь аргумент foobar
происходит, и его значение зависит от некоторого условия:
if(someConditionIsMet) {
anotherFunction({ foo: "123"});
} else {
anotherFunction({ bar: "321"});
}
Но иногда, если у меня где-то есть неопределенная переменная, я получаю Uncaught TypeError: Cannot read property of undefined
, и программа вообще не запускается.
Например, когда я вызываю someFunction(foobar)
, я ожидал получить Uncaught TypeError, потому что определенно одна из переменных будет undefined
.Однако здесь функция по-прежнему выполняется.
Почему это так?