Убудаваныя функцыі

Увесь той JavaScript, пра які мы даведаліся раней пакуль нічога не рабіў з самой старонкай. Давайце паспрабуем што-небудзь трошкі больш цікавае:

  • alert("Hello world!");

Ну як? Калі Вы ціснулі Enter зьявілася акенца з надпісам "Hello world!". Клёва, так?

alert() гэта функцыя (function). Функцыя – гэта частка кода, якая робіць нейкае дзеяньне і якая мае назву. Гэтак жа як і мэтад функцыя можа прымаць аргумэнты. Фунцыя alert() стварае і адлюстроўвае дыялогавае акенца з тэкстам, які Вы перадалі ў якасьці аргумэнта.

Яшчэ адна функцыя:

  • prompt("What is your name?"); //I'm going to type "Course.by" here
"Course.by"

У JavaScript усё што ідзе пасьля // зьяўляецца каментарам і ігнаруецца. Каментары – гэта спосаб пакідаць нататкі ў кодзе для сябе і іншых распрацоўшчыкаў.

Дыялогавае акенца дазваляе Вам пісаць тэкст унутры, а потым гэты радок вяртаецца з функцыі. Вельмі клёвая рэч, якую мы можам зрабіць з гэтай функцыяй – гэта прысвоіць значэньне, якое вяртае функцыя, зьменнай:

  • var favoriteColor = prompt("What is your favorite color?"); // I'm going to type "green"
  • favoriteColor;
"green"

Гэта жа як мы маглі пасьлядоўна выклікаць мэтады адзін за адным, мы можам выклікаць і функцыі:

  • prompt("Type something in lowercase:").toUpperCase(); // I'm going to type "lowercase"
"LOWERCASE"

Зараз паспрабуйце выклікаць функцыю confirm() і даведацца што яна вяртае.

confirm() будзе вяртаць адно з двух значэньняў: true або false. Звярніце ўвагу, што вакол гэты значэньняў няма двукосьсяў. true і false не радкі – яны завуцца булевымі значэньнямі (booleans). Яны проста адлюстроўваць праўду або хлусьню.

І Вы таксама маглі заўважыць, што функцыя alert() вяртае undefined таксама бяз двукосьсяў. undefined значыць “невызначана”, т.б. функцыя не вярнула значэньня, або вярнула зьменную, якой не было прысвоена значэньня.

Такім вобразам, Вы ўжо знаёмыя з лікамі, радкамі, булевымі значэньнямі і undefined, т.б. ведаеце пра чатыры асноўных тыпа дадзеных у JavaScript, якія завуцца прымітывамі (primitives). Пяты прымітыўны тып завецца null, які азначае “нічога”. Вельмі дзэн. Не турбуйцеся наконт null пакуль – мы яшчэ даведаемся пра нічога.

Вашая чарга:

  • Выкарыстоўваючы prompt() каб спытаць імя чалавека, напішыце яму прывітаньне з дапамогай alert() і зьменных.

Як ствараць функцыі

Зараз мы ўжо ведаем некалькі JavaScript функцый, таму прыйшоў час даведацца як пісаць свае.

Давайце толькі з пачатку вернемся ў школу і ўспомнім што такое функцыя ў матыматыцы. Ці памятаеце Вы такую штуку y(x) = x2 + 2*x + 1? Гэта функцыя. Кожнаму x адпавядае значэньне y. Т.б. y(3) = 32 + 2*3 + 1 = 16.

Абсалютна тая ж сітуацыя адбываецца і ў праграмаваньні. Надрукуйце наступнае і выканайце:

  • function y(x){ return x*x + 2*x + 1; };
  • y(3)

Ну як? Што вярнулася? 16? Тады клёва. Паспрабуйце яшчэ y(1000), y(0), y(-999294).

Ключавое слова return кажа JavaScript’у вяртаць вынік, які атрымаўся ад падліку гэтага радку кода. Бяз return JavaScript будзе вяртаць undefined з функцыі. Такім чынам JavaScript кажа, што нешта не мае значэньня.

Давайце даведаемся што насамрэч адбываецца калі Вы выклікаеце y(3):

  1. Выклікаеца функцыя y з аргумэнтам (3).
  2. Выконваецца код функцыі add. Парамэтар x усталёўваецца роўным 3.
  3. Частка 3*3 + 2*3 + 1 выконваецца.
  4. Вынік 3*3 + 2*3 + 1 вяртаецца.
  5. Функцыя y скончвае сваё выкананьне.

Функцыі насамрэч могуць ня толькі вяртаць значэньне, а і выклікаць іншыя функцыі і рабіць любыя іншыя патрэбныя аперацыі:

  • var greetSomeone = function(name) { alert("Hello" + name); };
  • greetSomeone("Vasia");

Звярніце ўвагу на назву аргумэнта: name. Мы маглі назваць яго n або неяк інакш, каб заняць менш месца. Але імя name адназначна азначае якую інфармацую будзе несьці ў сябе гэта зьменная, у той час як n абсалютна невідавочна і будзе патрабаваць ад іншага распрацоўшчыка (або ад будучага Вас, калі Вы вернецеся да гэтага коду праз некалькі месяцаў і ня будзеце памятаць як ён працуе) аналізаваць код, каб разабрацца што гэта за зьменная. У дадзеным выпадку, вядома, зразумела што б рабіла n. Але калі зараз Вы будзеце практыкаваць напісаньне імёнаў, якія маюць сэнс і змагацца з прагай усё напісаць хутчэй, у Вас зьявіцца звычка так рабіць і далей, што дапаможа ў сітуацыях, дзе гэта будзе мець насамрэч большы сэнс.

Зараз напішыце свае функцыі каб:

  • вітаць чалавека па ягонаму імю;
  • падлічваць суму трох зьменных.

Папярэдні занятак Наступны занятак