Особенность работы консоли. Это значит, что выражение ничего не возвращает.
Попробуйте ввести такие данные:
function foo(x) { return x + 1 }
foo(2)
Результат:
function foo(x) { return x + 1 }
undefined // объявление функции ничего не возвращает, хотя Function Declaration еще как!
// консоль же интерпретирует это выражение как Function Expression
foo(2)
3 // вызов a возвращает значение 3
(function bar(x) { return x * x }) // объявление функции, обернутое в скобки,
(function bar(x) { return x * x }) // интерпретируется как Function Declaration
Пример с
arrow function:
(x) => x + 1
(x) => x + 1 // объявление arrow function возвращает саму функцию
Вызов же
console.log отправляет в стандартный вывод строку, построенную на основе аргументов, при этом не возвращая какого-либо значения. Поэтому вы видите результат ее выполнения и
undefined.
Демо:
https://jsfiddle.net/1qwaq2m0/