Подтвердить что ты не робот

Почему оператор возврата Javascript не работает, когда возвращаемое значение находится в новой строке?

Рассмотрим следующий JavaScript:

function correct()
{
    return 15;
}

function wrong()
{
    return
          15;
}

console.log("correct() called : "+correct());
console.log("wrong() called : "+wrong());
4b9b3361

Ответ 1

Технически, точки с запятой в javascript являются необязательными. Но на самом деле он просто вставляет их вам в определенные символы новой строки, если считает, что они отсутствуют. Но решения, которые он делает для вас, не всегда то, что вы на самом деле хотите.

И оператор return, за которым следует новая строка, сообщает интерпретатору JS, что после этого следует вставить точку с запятой return. Поэтому ваш настоящий код такой:

function wrong()
{
    return;
          15;
}

Что явно не так. Так почему же это работает?

function wrong()
{
     return(
           15);
}

Ну вот, мы начинаем выражение с открытого (. JS знает, что мы находимся в середине выражения, когда он находит новую строку, и достаточно умен, чтобы в этом случае не вставлять точки с запятой.

Ответ 2

Если после инструкции return в этой строке ничего нет, тогда будет вставлен ;, который приведет к возврату без каких-либо значений = > возвращаемое значение undefined.

Смотрите: http://lucumr.pocoo.org/2011/2/6/automatic-semicolon-insertion/

Ответ 3

Командная строка javascript не может быть разбита на разрывы строк. Но аргументы функций могут быть нарушены, но не рекомендуется (сделанные в вашем примере).