Why do the code snippets below, taken from this article, produce different results due to only a single change in the placement of curly braces?
When the opening curly brace {
is on a new line, test()
returns undefined
, and "no - it broke: undefined" is displayed in the alert.
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);
}
When the brace is on the same line as return
, test()
returns an object, and "fantastic" is alerted.
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
are slightly different than in other places, and a line break "means more" in that spot than it would "midstream". – Doorstop