Por que os snippets de código abaixo, retirados de deste artigo , produzem resultados diferentes devido a apenas uma única alteração no posicionamento das chaves?
Quando a chave de abertura {
está em uma nova linha, test()
retorna undefined
e "não - quebrou: indefinido" é exibido no alerta.
function test()
{
return
{ /* <--- curly brace on new line */
javascript: "fantastic"
};
}
var r = test();
try {
alert(r.javascript); // does this work...?
} catch (e) {
alert('no - it broke: ' + typeof r);
}
Quando a chave está na mesma linha que return
, test()
retorna um objeto e "fantástico" é alertado.
function test()
{
return { /* <---- curly brace on same line */
javascript: "fantastic"
};
}
var r = test();
try {
alert(r.javascript); // does this work...?
} catch (e) {
alert('no - it broke: ' + typeof r);
}
return
é ligeiramente diferente do que em outros lugares, e uma quebra de linha "significa mais" naquele ponto do que "midstream".