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