Oto jsfiddleFunkcja JavaScript nie zwraca obiektu, gdy występuje przerwa między wierszami między instrukcją return a obiektem?
pełny kod:
function foo1(){
return {msg: "hello1"};
}
function foo2(){
return
{msg: "hello2"};
}
// output = "foo1 = {"msg":"hello1"}"
console.log('foo1 = ' , JSON.stringify(foo1()));
//output = " foo2 = undefined "
console.log('foo2 = ' , JSON.stringify(foo2()));
Różnica między nimi jest taka, że w foo2 The {msg: 'hello'}
jest w swojej nowej linii. Spodziewam się, że parser zignoruje białe spacje?
Nie z oświadczeniem zwrotu Wierzę, pamiętam przeczytanie go gdzieś, że jest to jeden z rzadkich przypadków w JS, że białe znaki mają znaczenie. Możliwy duplikat http://stackoverflow.com/questions/8528557/a-return-statement-in-javascript-does-notwork-properly-if-turn-value-is – OJay
Sprawdź ten link: http: // robertnyman.com/2008/10/16/beware-of-javascript-semicolon-insertion/ –
Pewne spacje. Dowolna liczba normalnych spacji ASCII jest w porządku, natomiast nie zezwala się na pojedyncze LF/CR. Wydaje się to arbitralne, ale założę się, że istnieje logiczne wytłumaczenie, dlaczego wczoraj wieczorem straciłem godzinę w tej sprawie. Komunikat o błędzie laktatora mógł być dokładniejszy/pomocny ... – sss4r