Page 76 - 6105
P. 76

Ім'я  функціонального  виразу  (sayHi)  має  особливий  сенс.  Воно  є  тільки

               зсередини самої функції. Це обмеження видимості входить в стандарт JavaScript і


               підтримується всіма браузерами, крім IE8-.

                      var f = function sayHi (name) {

                        alert  (sayHi);  //  зсередини  функції  -  видно  (виведе
               код функції)


                      };
                      alert (sayHi); // зовні - не видно (помилка: undefined


               variable 'sayHi')
                      Крім того, ім'я NFE не можна перезаписати:

                      var test = function sayHi (name) {

                        sayHi = "тест"; // спроба перезапису

                        alert (sayHi); // function ... (перезапис не вдалася)

                      };

                      test ();

                      У  режимі  use  strict  у  разі  виконання  коду  вище,  буде  повідомлення  про

               помилку.

                      Як  правило,  ім'я  NFE  використовується  для  єдиної  мети  –  дозволити

               зсередини функції викликати саму себе. NFE використовується в першу чергу в

               тих  ситуаціях,  коли  функцію  потрібно  передавати  в  інше  місце  коду  або

               перемістити  з  однієї  змінної  в  іншу.  Внутрішнє  ім'я  дозволяє  функції  надійно

               звертатися до самої себе, де б вона не знаходилася.

                      Наприклад, функція-факторіал з завдання обчислити факторіал:

                      function f (n) {

                        return n? n * f (n - 1): 1;

                      };

                      alert (f (5)); // 120

                      Спробуємо перенести її в іншу змінну g:



                                                                75
   71   72   73   74   75   76   77   78   79   80   81