Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lesson 6.doc
Скачиваний:
3
Добавлен:
23.09.2019
Размер:
386.56 Кб
Скачать

6.2. Функция – это переменная. Несколько видов объявлений функций.

Сейчас мы поделимся секретом, что функция на самом деле переменная, которая хранит реализацию функции, а скобки нужны для запуска этой реализации или передачи параметров. Это означает, что если создать новую переменную и присвоить ей содержимое переменной-функции, то мы создадим копию этой функции:

<html>     <head>         <script type="text/javascript">             function f () {                  alert('Это функция!');             }                                      var newf = f;             newf();         </script>     </head> </html>

Видите, что newf стала тоже функцией. Самое интересное, что после объявления функция возвращает свое значение, и мы можем записать тоже самое следующим образом:

<html>     <head>         <script type="text/javascript">             var newf function f () {                  alert('Это функция!');             }              newf();         </script>     </head> </html>

Самое интересное, что в данном случае можно и не задавать имя нашей функции и все будет работать:

<html>     <head>         <script type="text/javascript">             var newf function () {                  alert('Это функция!');             }              newf();         </script>     </head> </html>

Т.е. с самого начала конструкция function () создает функцию без названия, а затем мы ее присваиваем в переменную newf. Это сделано для того, чтобы мы программно могли присваивать обработчики для событий, не создавая самой функции, вернее не задавая ей имя. В общем это нам пригодиться, но рассмотрим эти свойства немного позже.

6.3. Функция внутри функции

Мы уже убедились, что функция – это всего лишь переменная, которая хранит программный код, который выполняется в момент его вызова. А помните, что такое область видимости для переменной?

Область видимости нам дает понять, что создав переменную внутри функции, мы ее будем видеть только внутри этой функции. Как вы думаете, а если мы создадим переменную-функцию внутри другой функции? Правильно, мы ее сможем вызвать только внутри этой функции:

<html>     <head>         <script type="text/javascript">              function first () {                  function second () {                      alert('Функция вызвана');                  }                                                   second();              }                                       first();              if (typeof second != "undefined") second();              else alert('Функция second недоступна');         </script>     </head> </html>

Видите, что вторая функция, которая объявлена внутри первой, вызывается только внутри этой функции, во внешней программе ее вызвать невозможно. Это понятно из правил области видимости.

Эту конструкцию никогда не употребляют, хотя это делать можно. Возможно, вы найдете этой конструкции применение.

6.4. Условная функция

Точно так же, можно создавать функции внутри условных операторов. Думаю следующий пример не нужно комментировать:

<html>     <head>         <script type="text/javascript">              var what = prompt("Какую функцию вы хотите объявить?\n1. Первую.\n2. Вторую.", 1);              what = parseInt(what);              var func;              if (what == 1) {                  func = function () {                      alert('Первая функция');                  }              }              else {                  func = function () {                      alert('Вторая функция');                  }              }                                       func();         </script>     </head> </html>

Объявление функций внутри условных операторов нам тоже не пригодиться, но если вы этому найдете применение, то значит, не зря эту конструкцию реализовали в JavaScript.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]