Почему функция возвращает "undefined"?

Почему check возвращает "undefined", а check2 - нормальный результат?

function check(url) {
return
    typeof url != 'undefined' &&
        url != '' &&
        url != location.protocol + '//' + location.hostname;
}

function check2(url) {
var result =
    typeof url != 'undefined' &&
        url != '' &&
        url != location.protocol + '//' + location.hostname;

    return result;
}

https://jsfiddle.net/5c2wb689/


Ответы (2 шт):

Автор решения: Air

В одну строку надо писать.

Скорее просто перед return не должно быть перехода на следующую строку

function check(url) {
  return typeof url != 'undefined' && url != '' && url != location.protocol + '//' + location.hostname;
}

function check2(url) {
  var result =
    typeof url != 'undefined' &&
    url != '' &&
    url != location.protocol + '//' + location.hostname;

  return result;
}

alert(check('https://yandex.ru'));
alert(check2('https://yandex.ru'));

→ Ссылка
Автор решения: Василиса

Автоматическая расстановка ; не всегда срабатывает верно, в данном случае точка с запятой была автоматически поставлена в конце строки после return. Не забывайте скобки в таких случаях, если переносите строку - вот ссылка на документацию

return(
  typeof url != 'undefined' &&
    url != '' &&
    url != location.protocol + '//' + location.hostname
);
→ Ссылка