Функции
Описание
function sayHi() {
console.log('Hi');
}
Вызов
sayHi();
Передача параметров
function sayNum(x) {
console.log(x); //выдаст 5
}
sayNum(5);
Возвращение значений
function sayNum(x) {
return 2*x;
}
console.log(sayNum(5)); // выдаст 10
После первого return функция завершается
function sayNum(x) {
return 2*x;
return 3*x
}
console.log(sayNum(5)); // ?
Function Declaration
Sq(7); // ?
function Sq(x) {
return x*x;
}
Sq(5);// ?
Function Expression
Sq(7); //
var Sq = function(x) {
return x*x;
}
Sq(5);
var Sq2 = Sq;
console.log(Sq2(9)); //81
В данном примере мы видим, что функция может быть переменной
Создание через конструктор new Function
var adder = new Function('a', 'b', 'return a + b');
// now call the function
adder(2, 6);
Не самый распространенный способ создания функции, но тем не менее отлично показывающий, что функция является также еще и объектом! И этим свойством мы будем пользоваться в дальнейшем.
Локальные, глобальные переменные
<script>
var x=5; // глобальная
function sayNum() {
var x=7; //локальная
console.log(x); //7
}
sayNum();
console.log(x); // 5
</script>
Функция с вызовом на месте
(function() {
console.log('Я существую');
})();
Такая конструкция позволяет выполнять код, не создавая новых глобальных переменных.
Например
var x = 5;
(function() {
var x = 7;
var a = 10;
})();
console.log(x);// 5
console.log(a);// Undefined
Формальные и фактические параметры
//формальные
function summ(a,b) {
return a+b;
}
//фактические
summ(5,7); //12
summ(5); //NaN
//В недостающий параметр передается Undefined
summ(5,7,11); //12
Массив arguments
summ(5,7,11); //23
function summ(a,b) {
var num =arguments.length;
var sum=0;
for (var i=0;i<num;i++){
sum+=arguments[i];
}
return sum;
}
Практика:
- Написать функцию, которая считает сумму двух чисел
- Пишем функцию, которая считает площадь прямоугольника
- Пишем функцию, которая считает расстояние между двумя точками (понадобится для agar.io)
- Есть длины двух сторон прямоугольника. Посчитать площадь прямоугольника и его периметр (тренируем возращение нескольких значений)
- Сделать функцию, которая разбивает число на два множителя. Множители должны возвращаться из функции.
- Изменение цвета DIV'a в зависимости от того какое число было введено
- НОД
Сделать функцию, которая на вход получает массив координат и функцию для отрисовки фигур. Попробовать передать туда функцию, которая бы рисовала квадраты, а потом функцию, которая бы рисовала круги
Сделать функцию, которая считает количество своих вызовов (если пройдены замыкания)