среда, 31 мая 2017 г.

Sorax. 13. Функции

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


/*
function выражение(аргументы) {
инструкции
return выражение
}

Для вызова функции используется синтаксис:

выражение(аргументы)
*/

// Объявим функцию, которая будет конкатенировать 2 строки
// Это инструкция объявления функции

function greet(name) {
return "Hello " + name;
}

console.log(greet("Sorax")); // Hello Sorax

console.log(greet("Sorax").toUpperCase()); // зная, что функция возвращет строку, мы можем вызывать методы объекта string

// Если функция ничего не возвращает, то она возвращает undefined

// Функцию также можно определить, если присвоить к-л переменной выражение определения функции
var greet = function greet(name) {
return "Hello " + name;
}

// Можно пропускать имя функции. Это анониманая функция.
// Посклльку функции являются объектами, то целесообразно объявлять их так.
var greet = function(name) {
return "Hello " + name;
}; // здесь д.б. ; после фигурной скобки

// Если мы передаем функции меньше, чем ожидаем, то мы не получаем ошибки.
// Всем неинициализированным аргументам присваивается ззначение undefined.
console.log(greet()); // Hello undefined

console.log(greet("Sorax", 34, 23, 26)); // Hello Sorax

// Чтобы получить все переданные аргументы внутри функции, мы можем использовать ОБЪЕКТ arguments
// arguments ведет себя, как массив. Он выводится в консоль, как массив.
// Можно обращаться к отдельным аргументам при помощи индексов: arguments[2]
var greet = function(name) {
console.log(arguments);
return "Hello " + name;
};
console.log(greet("Sorax", 34, 23, 26)); // Arguments { 0: "Sorax", 1: 34, 2: 23, 3: 26, ещё 2… }

// Полезное свойство этого объекта длина .length
var greet = function(name) {
console.log(arguments.length);
return "Hello " + name;
};
console.log(greet("Sorax", 34, 23, 26)); // 4

// Мы можем передавать функции другие функции в качестве аргументов и возвращат функции из функций.
var func = function(callback) {
var name = "Sorax";
callback(name);
};

func(function(n) {
console.log("Hello " + n);
}); // Hello Sorax

// Также функция м.б возвращаемым значением.
var func = function() {
return function() {
console.log("Hi");
}
};
func()(); // В точку вызова возвращается анонимная функция.

// Функция может быть вызвана сразу после определения, если мы используем выражение определения.
// Мы присваиваем переменной значение функции.
// Для большей ясности выражение берется в круглые скобки.
var greeting = (function(name) {
return "Hello " + name;
}("Sorax"));
console.log(greeting); // Hello Sorax

// Функция, которая вызывается сразу после определения называется анонимной самовызывающейся функцией.

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

Отправить комментарий