Advertisement
MeroslavTsaakoff

JS Functions - Telerik Academy student notes

May 12th, 2014
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // JavaScript функции
  2.  
  3. // браузърът зарежда първо тези (стандартните) функции, от което следва, че могат да бъдат изпълнени преди декларациите им
  4. function functionName () {
  5.     // code
  6. }
  7.  
  8. // тези (анонимни) функции могат да бъдат изпълнени след като браузърът е изпълнил декларацията им
  9. var varName = function() {
  10.     console.log('Hello');
  11. };
  12.  
  13. // присвояване на функция на променлива, при което при всяко извикване на променливата се изпълва кодът във функцията, а стойността на променливата е резултатът от return-а на функцията
  14. var varName = function functionName() {
  15.     console.log('Hello');
  16. };
  17.  
  18. // инициализация на функция и изпълнението ѝ на момента
  19. (function functionName() {
  20.     // code
  21. })();
  22.  
  23. // като параметър на функция може да се подаде функция
  24. functionName(5, 3, someFunctionName);
  25. functionName(5, 3, function() { /* code */ });
  26.  
  27. // можем да използваме изрази за параметри на функциите
  28. functionName(2 + 3);
  29.  
  30. // най-ефективният начин за деклариране на for цикъл
  31. for (var i = 0, len = arr.length; i < len; i++) {
  32.     // code
  33. }
  34.  
  35. // замерване на времето за изпълнения на функция, като включва и времето на breakpoint
  36. console.time('functionName');
  37. functionName();
  38. console.timeEnd('functionName');
  39.  
  40. function fN(a, b, c) {
  41.     console.log(arguments);
  42.     var a = arguments[0]; // ще прихванем първия периметър подаден при извикването на функцията
  43. }
  44. fN(3, 5, 8); // ще върне всички параметри на функцията
  45.  
  46. // arguments. -> дава доста възможности (с точка)
  47.  
  48. // всяка функция връща undefined по принцип, ако няма зададен return
  49.  
  50. // променливата се превръща във функция
  51. function sampleFunctionName() {
  52.     return anotherSampleFunctionName; // без () на функцията, иначе ще се изпълни "anotherSampleFunctionName()"!
  53. }
  54. function anotherSampleFunctionName() {
  55.     // code
  56. }
  57. var a = sampleFunctionNameOne();
  58. a(); // ще се изпълни "// code"
  59.  
  60. // return; === return undefined;
  61.  
  62. // проверка дали 'а' съществува в даден масив
  63. function fN(a) {
  64.     var arr = [1, 2, 3];
  65.  
  66.     if(arr.indexOf(a) > -1) {
  67.         return true;
  68.     }
  69.     else {
  70.         return false;
  71.     }
  72. }
  73.  
  74. // ако използваме функция за проверка, дали нещо е вярно, се връща true или false; ако функцията е за намирането на елемент или индексът му, в случай, че не е намерен, е препоръчително функцията да връща null
  75.  
  76. // function scope - всичко в дадена функция е недостъпно извън нея (важи само за функциите, всички останали конструкции нямат собствен scope), освен глобалните променливи, които независимо къде са декларирани, са достъпни отвсякъде
  77.  
  78. // всяка променлива декларирана извън функция приспада към глобалния scope, което е непрепоръчително да се прави
  79.  
  80. // добра практика е целият файл да е заграден от функция от типа "(function(){ })();", за да е сигурно, че променливите от файла няма да са достъпни извън него
  81.  
  82. // всеки refresh на страницата презарежда всички скриптове
  83.  
  84. // резултатът на конзолата от предстоящия код е: "undefined, 8, 5", защото браузърите след функциите зареждат и всички променливи, и съобразяват, дали нямат по-конкретен scope от вътрешна функция
  85. var sampleVar = 5;
  86. function sampleFunctionName() {
  87.     console.log(sampleVar);
  88.     var sampleVar = 8;
  89.     console.log(sampleVar);
  90. }
  91. sampleFunctionName();
  92. console.log(sampleVar);
  93.  
  94. // ще се изпълни втората функция с параметри sampleValue и undefined
  95. function sampleFuncName(sampleVar) {
  96.     // code
  97. }
  98. function sampleFuncName(sampleVar, anotherSampleVar) {
  99.     // another code
  100. }
  101. sampleFuncName(sampleValue);
  102.  
  103. // можем да изпълним функция с непълния ѝ брой параметри, на която всички параметри, въпреки това, ще са достъпни чрез "arguments"
  104.  
  105. // добър начин за реализирането на една функция с различен на брой параметри е да се проверява arguments.length в switch и за всеки case да се извиква желаната функция спрямо броя на параметрите
  106.  
  107. // добра практика е всички променливи в даден scope да се декларират с една "var" инициализация, изредени със запетайки
  108.  
  109. // начинът за инициализиране на параметри с default-на стойност е във функцията да се декларират параметрите по следния начин: sampleParam = sampleParam || defaultValue(изборът ни за default-на стойност на параметъра)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement