Израз отляво на функция в 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('!');
}