- JavaScript
- Пользовательские Javascript функции
- Javascript функции с параметрами (аргументами) и возврат значений
- Все способы создания пользовательских функций
- Использование выражений с функциями
- Область видимости переменных. Javascript глобальные и локальные переменные в функции
- ОБЛАСТЬ ВИДИМОСТИ ПЕРЕМЕННЫХ
- Рекурсивная функция javascript
- Меню
- Пользовательские функции в JavaScript
JavaScript
В javascript достаточно много функций, встроенных в синтаксис языка. Рассмотрим одну из них.
Рассмотрим примеры использования функции eval :
var y = 5; // значение у равно 5 var x = "if (y==5) y*2-3"; // значение х равно строке символов var rezult = eval(x); // rezult равно 7
Пользовательские Javascript функции
Синтаксис создания функции:
Функция в роли процедуры. Если функция выполняет какие-либо действия и не возвращает значение:
function имя_функции(аргументы) код; >
имя_функции (аргументы); // с агрументами имя_функции (); // без аргументов
function sayHello() alert("hello"); > //. sayHello();
function имя_функции(аргументы) код; return результат или выражение >
var a = имя_функции (аргументы); alert(a); var b = a + a;
Как видно из примера, после return функция действительно завершает свою работу. Поэтому оператор alert(«2») выполняться уже не будет.
Вызов же функции происходит через присваивание. Вызов в данном примере можно также организовать так: alert(sayHello()); , но это не рекомендуемый вариант.
Важно: Таким образом, оператор return указывает на возвращаемое значение функции, которое будет передано переменной при следующей форме вызова:
переменная = имя_функции();
Javascript функции с параметрами (аргументами) и возврат значений
Рассмотрим подробнее использование инструкции return в функции javascript на двух примерах. Кроме того, рассмотрим использование в Javascript функции с параметрами (аргументами).
function sayHello(userName) alert("Привет " + userName); > sayHello("Вася"); sayHello("Петя");
В примере функция имеет один аргумент, указанный в скобках. Переменная userName примет то значение, которое указано в скобках при вызове функции «Вася» и «Петя» . Значит при первом вызове функция выведет в диалоговое окно Привет Вася , при втором — Привет Петя .
function sayHello(userName) return "Привет " + userName; > var a = sayHello("Вася"); alert(a);
Важно: Обратите внимание на разницу между вызовом функции без инструкции return и с инструкцией: в первом случае функция вызывается как оператор, возвращая значение undefined ; во втором случаем функция вызывается через присваивание, либо участвуя в выражениях (см. ниже)
Все способы создания пользовательских функций
function a1(x, y) return x + y; >
//обязательным является только последний аргумент – тело функции var a1 = new Function('x', 'y', 'return x + y');
var a1 = new Function('return "hello"');
var a1 = function(x, y) return x + y; >;
Вызов функций во всех случаях будет:
Использование выражений с функциями
Обычное использование javascript функции:
function sum(arg1,arg2) var a=arg1+arg2; return a; > var b=sum(1,2); alert(b);
Функция как составная часть выражения:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
function sum(arg1,arg2) var a=arg1+arg2; return a; > var b=sum(1,2); alert(b); function add() var c=1+sum(1,2); return c; > var d=add(); alert(d);
Во второй функции используется выражение, ссылающееся на первую функцию (в 11-й строке).
Рассмотрим другие варианты использования выражений с функциями (только для функций, которые возвращают результат):
Функция:
function plRectangle(width, height) var S = width * height; return S >
Вызов функции как часть выражения:
if (plRectangle(a, b) > plRectangle(c, d)) alert("Первый прямоугольник больше второго");
var х = "25рх"; var у = 12; var S = plRectangle(parselnt(x), у);
Область видимости переменных. Javascript глобальные и локальные переменные в функции
Область видимости переменной — область кода, в котором переменная доступна для использования.
- Глобальные переменные — создаются на уровне сценария и сохраняются до конца сценария; — объявляются до описания javascript функции; — могут быть причиной сложно находимых ошибок;
- Локальные переменные — создаются внутри фрагментов кода и не видны извне; — явно объявляются в теле javascript функции; — аргументы (параметры) функции — всегда локальные переменные; — лучше использовать локальные переменные, так как доступ к ним больше контролируется.
ОБЛАСТЬ ВИДИМОСТИ ПЕРЕМЕННЫХ
Рассмотрим конкретные примеры области видимости переменных в javascript при использовании глобальных и локальных переменных.
var S = 2; // Глобальная переменная S function plRectangle(width, height) var S = width * height; return S // Локальная переменная S > z = plRectangle(2, 3); alert(z); alert(S);
Пример: Значение z равно 6, а значение S осталось равным 2, то есть значению глобальной переменной, определенной во внешней программе
function plRectangle(width, height) var s = width * height; // аргументы всегда локальны width = width + 10; return s > width = 2; height = 3; z = plRectangle(width, height); alert(z); alert(width);
var S = 2; // Глобальная переменная S function plRectangle(width, height) S = width * height; // заменяем глобальную переменную: return S // S - глобальная переменная (т.к. без определения var) > var z = plRectangle(2, 3); alert(z); alert(S);
function Plrectangle(width, height) S = width * height; //глобальная переменная return S > z = Plrectangle(2, 3); S=2; // изменяем глобальную переменную alert(z); alert (S);
function plRectangle(width, height) var S = width * height; var x = 17; return S > z = plRectangle(2,3); alert(z); alert(x); // не определена во внешней программе alert (S); // не определена во внешней программе
Пример: Значение z равно 6; переменная S во внешней программе не определена; переменная х во внешней программе не определена
Рекурсивная функция javascript
Важно: В информатике и программировании, а, соответственно, и в javascript, рекурсия — это вызов функции из самой же функции, т.е. функция в функции
Бывают также косвенная или сложная рекурсия , когда функция вызывается не непосредственно из самой себя, а из вложенной в нее функции: например, функция A вызывает функцию B , а функция B — функцию A . Количество вложенных вызовов функции или процедуры называется глубиной рекурсии.
Рекурсия javascript рассмотрена ниже на примере возведения числа в степень.
Для начала рассмотрим итерационный вариант возведения в степень, т.е. с использованием цикла:
Пример: Используя функцию, необходимо вычислять возведение числа в степень. Выполнить задание, используя цикл for
Теперь выполним возведение числа в степень через рекурсию:
Меню
Автор: Салихов Кирилл | TurboSite | Дизайн: Switchroyale
Пользовательские функции в JavaScript
Очень часто при программировании на языке JavaScript нам необходимо многократно повторять одно и то же действие в разных частях программы. Чтобы не дублировать тот же самый код, существуют функции — основные строительные блоки программы на JavaScript.
О работе с функциями в JavaScript мы уже подробно писали в этой статье, поэтому повторяться не будем. Однако стоит добавить следующее: существуют как встроенные, так и пользовательские функции JavaScript. Например, встроенная функция alert() запускает в браузере окно с каким-нибудь текстом и специальной кнопкой для подтверждения. Пока это окошко висит в браузере, выполнение скриптов будет приостановлено. Для продолжения работы пользователю надо просто нажать на кнопку «OK», тем самым подтвердив, что он ознакомлен с выведенной в окошке информацией:
Так вот, когда мы говорим о пользовательских функциях в JavaScript, то имеем в виду функции, которые разработчик создаёт сам. В прошлом примере в качестве пользовательской функции выступала функция showMessage() . В этот раз давайте создадим какую-нибудь очередную простую пользовательскую функцию, и пусть она выведет, допустим, три окна подряд.
Но для начала не мешало бы вспомнить схему написания пользовательской функции. В JavaScript она создаётся так: 1) пишем ключевое слов function; 2) пишем имя функции со скобками, не забываем ставить пробел; 3) записываем нужный нам код в фигурных скобках:
// создание функции в JavaScript function имя_функции() блок кода; > // вызов функции имя_функции();Естественно, использование функции в JavaScript позволит вам избавить программу от дублирования кода. Записав код в функцию всего лишь один раз, вы сможете потом вызывать эту функцию по имени сколько угодно.
Следует лишь помнить, что имя функции не должно совпадать с именем какой-нибудь переменной. В остальном, правила задания имён функциям в JavaScript совпадают с правилами задания имён переменным.
Итак, переходим к нашей пользовательской функции:
function privetstvie() alert("Привет,"); alert("как"); alert("дела?"); >То есть перед нами классический пример наличия одной функции внутри другой функции. Чтобы находящийся в функции код выполнился, останется лишь вызвать пользовательскую функцию, написав её имя:
Результатом работы этого JavaScript-кода станет последовательный вывод трёх окошек следующего содержания: