Дефиниране на функция

Функциите при JavaScript се дефинират с ключовата дума function. Можете да дефинирате функция като използвате един от двата метода за дефиниране – деклариране или като израз.

Функция чрез декларация

По-рано в този урок вие научихте, че функциите се декларират със следния синтаксис:

Така декларирани функции, обаче не се изпълняват веднага. Те са „запазени за бъдеща употреба“ и ще бъдат изпълнени по-късно когато биват извикани.

Опитайте сами »

Бележка: Точка и запетая ; се използва за разделяне на изпълними изрази в JavaScript. Тъй като декларирането на функция не е изпълним израз, то и не е прието да завършва с точка и запетая.


Функцията като израз

Дадена функция в JavaScript може да бъде определена и като израз. По този начин функцията може да се съхранява в произволна променлива:

Опитайте сами »

След като функцията е съхранена в променлива, променливата може да се използва като функция по-късно в кода:

Опитайте сами »

Функцията по-горе в действителност е една анонимна функция (функция без име). Функциите, които се съхраняват в променливи, не се нуждаят от имена. Те винаги се извикват чрез името на променливата. Бележка: Функцията горе завършва с точка и запетая, защото е част от изпълнимо изявление – извършваме присвояване на стойност към променлива.


Функцията конструктор

Както вече видяхме в предишните примери, функциите в JavaScript се дефинират с ключовата дума function. Те също така могат да бъдат дефинирани и с вграденият в JavaScript конструктор, който наричаме Function().

Опитайте сами »

Всъщност не е нужно да използвате функцията конструктор. Горният пример е идентичен на следният:

Опитайте сами »

Бележка: трябва да се избягва използването на ключовата дума new в JavaScript.


Функция и hoisting

По-рано през този урок разгледахме какво е „hoisting“. Това е поведението по подразбиране при JavaScript, което придвижва декларациите в началото на текущия обхват(код). hoisting се прилага както при декларациите на променливи така и при декларациите на функциите. Поради това, функциите може да се извикват в реда на кода преди те да се декларират.

Функции, които са дефинирани с помощта на изразяване не резполагат с това свойство.

Самостоятелно извикващи се функции

Функция дефинирана като израз може да бъде извикана от само себе си. Самостоятелно извиканата функция е израз, който се задейства (започва) автоматично, тоест няма нужда от изрично извикване. Такава функция ще се изпълни автоматично, ако израза е последван от скоби (). Но не можем да извикаме по този начин функция, която е декларирана. Трябва да се добавят скоби около функцията за да укажем, че това е израз на функция:

Опитайте сами »

Функцията по-горе е действителност е анонимна самостоятелно извикваща се функция (функция без име).

Функциите могат да се използват като стойности

JavaScript функциите могат да бъдат използвани като стойности, а и както се вижда във вторият пример и в изразите.

Опитайте сами »
Опитайте сами »

Функциите са обекти

Операторът typeof в JavaScript връща стойността function за функциите. Но функциите на JavaScript може най-добре да бъдат описани като обекти. Те имат свойства и методи. Свойството arguments.length връща броя на аргументите, които са получени, когато функцията е извикана:

Опитайте сами »

Методът toString() връща функция(или друг тип променлива) като низ:

Опитайте сами »

Бележка: Функцията, която е дефинирана като свойство на даден обект, се нарича метод на обекта. Функция имаща за цел да създава нови обекти, се нарича конструктор на обект.

Вижте още