Выражение слева функции в JavaScript

Давайте рассмотрим следующий код:

javascript+function func() {
  console.log('!');
}

Как вы уже знаете, эта функция является функциональным выражением, ни смотря на то, что у нее задано имя (мы уже выяснили, что наличие имени вообще не критерий). Уберем этот плюс - и получим Function Declaration:

javascriptfunction func() {
  console.log('!');
}

Давайте поставим + на строчке перед функцией - она опять станет Function Expression:

javascript+
function func() {
  console.log('!');
}

А теперь после плюса поставим число 1 и точку с запятой - наша функция станет Function Declaration:

javascript+1;
function func() {
  console.log('!');
}

Почему так: потому что на первой строке написана одна законченная команда, закрытая точкой с запятой. Поэтому эта команда никак не влияет на нашу функцию.

На самом деле точку с запятой можно убрать, ведь в JavaScript она не обязательна - функция все равно останется Function Declaration:

javascript+1
function func() {
  console.log('!');
}

А вот если после 1 влепить еще один плюс, то функция станет Function Expression:

javascript+1+
function func() {
  console.log('!');
}

Почему так: потому что на первой строчке незавершенное выражение - стоит плюс и после него ничего. Поэтому интерпретатор JavaScript считает, что этот плюс относится к строке ниже, то есть к нашей функции.

Если же на первой строке стоит завершенное выражение, то JavaScript автоматически ставит ему точку с запятой и это выражение никак не влияет на нашу функцию.

Задание 1

Определите, является ли представленная функция Function Declaration или Function Expression:

javascript-
function func() {
  console.log('!');
}
Задание 2

Определите, является ли представленная функция Function Declaration или Function Expression:

javascript-1;
function func() {
  console.log('!');
}
Задание 3

Определите, является ли представленная функция Function Declaration или Function Expression:

javascript-1
function func() {
  console.log('!');
}
Задание 4

Определите, является ли представленная функция Function Declaration или Function Expression:

javascript1
function func() {
  console.log('!');
}
Задание 5

Определите, является ли представленная функция Function Declaration или Function Expression:

javascript-1-
function func() {
  console.log('!');
}