Функции JavaScript.



Функции — это блоки кода, которые имеют своё имя и их можно вызывать по этому имени. Функции в JavaScript бывают как встроенными например alert(), так и пользовательскими которые программист создаёт сам. Они обычно выполняют какую-то одну определенную задачу (например суммирование чисел, вычисление корня и т.д.).

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

// создание функции
function имя_функции() {
 блок кода;
}

// вызов функции
имя_функции();

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

Функции — объекты

В javascript функции являются полноценными объектами встроенного класса Function. Именно поэтому их можно присваивать переменным, передавать и у них есть свойства:

function f() {
	...
}
f.test = 6
...
alert(f.test) // 6

Области видимости

Каждая функция задает свою индивидуальную область видимости.

Переменные можно объявлять в любом месте. Ключевое слово var задает переменную в текущей области видимости. Если его забыть, то переменная попадет в глобальный объект window. Возможны неожиданные пересечения с другими переменными окна, конфликты и глюки. Заданная через var переменная видна везде в области видимости, даже до оператора var.

Команда return

С помощью команды return Вы можете возвращать из функций значения. Пример:

//Функция sum возвращает сумму переданных в нее переменных
function sum(v1,v2){
   return v1+v2;
}

document.write('5+6=' + sum(5,6) + '<br />');
document.write('10+4=' + sum(10,4) + '<br />');

Встроенные функции

Помимо пользовательских функций в JavaScript существуют еще и встроенные функции. Например функция isFinite позволяет проверить является ли переданное значение допустимым числом:

document.write(isFinite(40)+'<br />');
document.write(isFinite(-590)+'<br />');
document.write(isFinite(90.33)+'<br />');
document.write(isFinite(NaN)+'<br />');
document.write(isFinite('Это строка')+'<br />');

Локальные и глобальные переменные

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

Переменные, которые создаются вне кода функций называются глобальными переменными к таким переменным можно обращаться из любого места кода. Если объявить переменную без var внутри функции она тоже становится глобальной. Глобальные переменные уничтожаются только после закрытия страницы.

<html>
<head>
<script type='text/javascript'>
//Объявим глобальные переменные var1 и var2
var var1="var1 существует";
var var2;

function func1() {
   //Присвоим var2 значение внутри функции func1
   var var2="var2 существует";
}
// Из другой функции выведем содержимое переменной var1 и var2 на страницу
function func2() {
   //Выводим содержимое переменной var1
   document.write(var1 + '<br />');
   //Выводим содержимое переменной var2
   document.write(var2);
}
</script>
</head>
// Вызовем функцию func2() после полной загрузки документа
<body onload='func2()'>
</body>
</html>

Свойства и методы функций

Свойство length

В теле функции свойство arguments.length определяет количество аргументов, переданных функции. Однако свойство length самой функции имеет иной смысл. Это свойство, доступное только для чтения, возвращает количество аргументов, которое функция ожидает получить — число объявленных параметров.

Свойство prototype

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

Методы call() и apply()

Методы call() и apply() позволяют выполнять косвенный вызов функции. Первым аргументом обоим методам, call() и apply(), передается объект, относительно которого вызывается функция; этот аргумент определяет контекст вызова и становится значением ключевого слова this в теле функции. Чтобы вызвать функцию func() (без аргументов) как метод объекта obj, можно использовать любым из методов, call() или apply():

func.call(obj);
func.apply(obj);

Метод bind()

Основное назначение метода bind() состоит в том, чтобы связать (bind) функцию с объектом. Если вызвать метод bind() функции func и передать ему объект obj, он вернет новую функцию. Вызов новой функции выполнит вызов оригинальной функции func как метода объекта obj. Любые аргументы, переданные новой функции, будут переданы оригинальной функции. Например:

// Функция, которую требуется привязать
function func(y) {
	return this.x + y;	
}

var obj = {x:1};		// Объект, к которому выполняется привязка
var g = func.bind(obj);	// Вызов g(x) вызовет obj.func(x)

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *