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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

`-1- function func() { console.log('!'); }`
← →
↑
en ru