2016-07-21 4 views
1
function foo1() { 
    return { 
     bar: "hello" 
    }; 
} 

function foo2() { 
    return 
    { 
     bar: "hello" 
    }; 
} 

console.log(foo1()); 
console.log(foo2()); 

Могу ли я получить объяснение, почему две функции распечатывают разные результаты, даже если код выглядит одинаково?Почему эти синтаксически идентичные функции дают разные результаты?

+0

А также [полезная ссылка] (http://stackoverflow.com/questions/2846283/what-are-the-rules-for-javascripts-automatic-semicolon-insertion-asi) для вас. –

ответ

9

вставка Автоматической точки с запятой

Цитирование the specification,

Когда continue, break, return, throw или yield маркера встречается и КонцаСтроки встречается до следующих маркеров, A точка с запятой автоматически вводится после continue, break, return, throw, или yield токен.

Так что код станет так

function foo2() { 
    return;   // Note the `;` after `return` 
    { 
     bar: "hello" 
    }; 
} 

return оператор завершает, а затем есть объект после того, как та, которая в основном код недостижим. Поскольку оператор return ничего не возвращает, возвращается undefined.

Смежные вопросы