Recentemente, eu estava testando um javascript com um colega de trabalho e encontramos o equivalente a isto:
var baz = foo || bar;
Onde baz deveria ser definido como bar se foo não existisse.
Este parece ser um equívoco comum de um fallback aceitável, para uma variável ser indefinida, mas fará com que o mecanismo de javascript grite com você que “foo não está definido” e falhe.
A maneira certa de fazer isso é verificar se foo ou bar estão indefinidos:
var baz;
if (typeof foo !== 'undefined') {
baz = foo;
} else if (bar !== 'undefined') {
baz = bar;
} else {
baz = null;
}
Evite que futuros desenvolvedores trabalhem em sua frustração com o código e seja cauteloso ao não presumir a existência de variáveis e verifique-as primeiro.