Почему оператор возврата Javascript не работает, когда возвращаемое значение находится в новой строке?
Рассмотрим следующий JavaScript:
function correct()
{
return 15;
}
function wrong()
{
return
15;
}
console.log("correct() called : "+correct());
console.log("wrong() called : "+wrong());
Ответ 1
Технически, точки с запятой в javascript являются необязательными. Но на самом деле он просто вставляет их вам в определенные символы новой строки, если считает, что они отсутствуют. Но решения, которые он делает для вас, не всегда то, что вы на самом деле хотите.
И оператор return, за которым следует новая строка, сообщает интерпретатору JS, что после этого следует вставить точку с запятой return. Поэтому ваш настоящий код такой:
function wrong()
{
return;
15;
}
Что явно не так. Так почему же это работает?
function wrong()
{
return(
15);
}
Ну вот, мы начинаем выражение с открытого (. JS знает, что мы находимся в середине выражения, когда он находит новую строку, и достаточно умен, чтобы в этом случае не вставлять точки с запятой.
Ответ 2
Если после инструкции return в этой строке ничего нет, тогда будет вставлен ;, который приведет к возврату без каких-либо значений = > возвращаемое значение undefined.
Командная строка javascript не может быть разбита на разрывы строк. Но аргументы функций могут быть нарушены, но не рекомендуется (сделанные в вашем примере).