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