¿Por qué los siguientes fragmentos de código, extraídos de este artículo , producen resultados diferentes debido a un solo cambio en la ubicación de las llaves?
Cuando la llave de apertura {
está en una nueva línea, test()
regresa undefined
y "no - se rompió: indefinido" se muestra en la 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);
}
Cuando la llave está en la misma línea que return
, test()
devuelve un objeto y se alerta "fantástico".
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
es ligeramente diferente a la de otros lugares, y un salto de línea "significa más" en ese lugar de lo que significaría "midstream".