«Единственный способ творить великие дела – это любить то, что ты делаешь»
JavaScript

Игра на «Морской Бой» на JavaScript: Простая Игра и Игра для Двоих


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



Объявление функции в javascript

Объявление функции в JavaScript выглядит следующим образом.

Фрагмент кода

function any_1(param_1){

for(i = 0; i < param_1; i++){
document.write("Hi </br>");
}

}

any_1(3);

Результат

Что представляет собой объявление функции?

  • Функция создается (объявляется) при помощи ключевого слова function;

  • Она имеет имя - в данном случае any_1;

  • У нее есть параметр - param_1;

  • У функции есть тело (фрагмент кода) - в нашем случае цикл;

  • Вызов функции происходит по ее имени any_1 с указанием аргумента(ов)(3).

Следует знать, что при объявлении функции создается переменная с тем же именем (в нашем случае переменная any_1). Переменная используется для хранения ссылки на функцию. На самом деле при вызове функции указывается имя переменной, но так как их имена совпадают, то в основном говориться именно об имени функции.

Функциональное выражение в javascript

Ключевое слово function нередко можно встретить в ином представлении... Далее рассмотрим, какой вид может иметь функциональное выражение.

Фрагмент кода

var any_2 = function(param_2){

for(i = 0; i < param_2; i++){
document.write("by-by </br>");
}

}

any_2(2);

Результат

Сейчас было рассмотрено функциональное выражение. Что мы при этом увидели?

  • Ключевое слово function используется внутри команды присваивания "=";

  • Функция не имеет имени: она присваивается переменной any_2;

  • У функции есть параметр - param_2;

  • И также есть тело - это снова цикл;

  • Вызов функции происходит при помощи переменной any_2, которой она была присвоена.

При работе с функциональными выражениями, где используется команда присваивания "=", переменная, которой присваивается значение функции, является ссылкой (она указывает) на функцию.

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

Различия между объявлением функций и функциональными выражениями

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

Объявление функции не возвращает ссылку на нее. При объявлении создается переменная с именем функции. В этой переменной хранится ссылка на функцию.

Функциональное выражение возвращает ссылку на функцию. И Вы можете решить, что с этой ссылкой делать дальше.

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

Объявление функции - это команда, так как при этом происходит скрытое присваивание.

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

В обоих случаях процедура вызова функции одинакова: указывается имя переменной и в круглых скобках аргумент(ы).

И еще один важный момент, скрытый от глаз Javascript-разработчика: 

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

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

Функция - это значение. Ссылка на функцию

Функции можно рассматривать как значения. До сих пор они рассматривались как нечто такое, то что можно вызвать и что несет в себе выполнение фрагмента кода.

Тем не менее, это и значение тоже. Значение, которое является ссылкой на функцию.

Стоит заметить: независимо от способа создания функции мы будем иметь ссылку на нее.

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

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

Объявление функции any_1:

function any_1(param_1){
for(i = 0; i < param_1; i++){
document.write("Hi </br>");
}
}

Javascript создает переменную any_1 для хранения ссылки на функцию.

any_1(3); - вызов функции через переменную any_1

Результат:

Hi
Hi
Hi

В случае с функциональным выражением при помощи команды "=" происходит явное присваивание переменной ссылки на функцию.

Функциональное выражение:

var any_2 = function(param_2){
for(i = 0; i < param_2; i++){
document.write("by-by </br>");
}
}

Присваиваем ссылку на функцию переменной any_2.

any_2(2); - вызов функции через переменную any_2

Результат:

by-by
by-by

Раз уж здесь рассматриваются функции, как значения, то обе переменных any_1 и any_2, содержащие ссылки на функции, содержат определенные значения.

Как известно, значение любой переменной можно присвоить другой переменной. Сделаем это со значениями переменных any_1 и any_2 (присвоим их значения другим переменным).

var any_11 = any_1;

Теперь как переменная any_1, так и переменная any_11 содержат ссылку на одну и ту же функцию.

any_1(3); - вызов функции через переменную any_1

Результат:

Hi
Hi
Hi

any_11(1); - вызов через переменную any_11

Результат:

Hi

var any_22 = any_2;

Аналогично, обе переменных: any_2 и any_22 содержат ссылку на одну и ту же функцию.

any_2(1); - вызов функции через переменную any_2

Результат:

by-by

any_22(4); - вызов через переменную any_22

Результат:

by-by
by-by
by-by
by-by


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

Отзывы и комментарии:

Комментариев нет...

Оставить отзыв:

Ваше Имя:

Текст комментария:

Ответьте на вопрос:

Сколько дней в Високосном году?


Задачи по JavaScript
Последние заметки
Популярные заметки