Выражение слева функции в 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('!');
}