Функции в JavaScipt
function sum(a,b){
return a+b;
}
let sun = function(a,b){
return a+b;
}
Объявление функции
let getName = (name) => name;
Стрелочные функции (Fat arrow function)
console.log(sum(10,10));
// -> 20
function sum(a,b){
return a+b;
}
Такой код работает, хотя функция объявляется ниже того кода, который её использует. Это происходит оттого, что объявления функций не являются частью обычного исполнения программ сверху вниз. Они «перемещаются» наверх их области видимости и могут быть вызваны в любом коде в этой области.
1 console.log(sum(10,10));
2 /* -> Uncaught TypeError:
3 /*sum is not a function at main.js:1 */
4
5 var sum = function(a,b){
6 return a+b;
7 }
8
9 console.log(sum(10,10));
10 // -> 20
Объявление Function Declaration
Sum это перменная которая хранит значение возвращаемое значение анонимной функции. Конструкция на строке 1 не знает о существовании переменной sum и поэтому на консоль выводится ошибка.
let sun = (a, b) => a + b;
console.log(sun(10, 10));
// -> 20
let printName = (name) => console.log(name);
printName("Vadim");
// -> Vadim
Стрелочные функции Fat arrow functions
Стрелочные функции не содержат слова function и не имеют собственно значения this, а наследуют его от ближайшего лексического окружения.
1 function persone(name,lastName){
2 console.log(arguments[0]);
3 console.log(arguments[1]);
4 console.log(this);
5 }
6
7 persone("Vadim","Nahornyi");
8 Vadim
9 Nahornyi
10 Window {}
При вызове функции ей неявно передается два параметра: arguments и this.
arguments - коллекция всех передаваемых параметров функции.
this - указывает на объект к которому привязана функция.
arguments и this
1 function addMethod(object,
2 methodName, func){
3 }
4
5 console.log(addMethod.length);
6 // -> 3
length - при вызове у функции возвращает к-во переданных аргументов.
length у функций
1 function addMethod(object,
2 methodName, func){
3 }
4
5 console.log(addMethod.length);
6 // -> 3
контекст функции - объект к которому привязана функция. Ключевое слово this ссылается на контекст функции.
length у функций
-
В виде функции;
-
В виде метода;
-
В виде конструктора;
-
С помощью методов call() и apply()
Способы вызова функций
function persone(name,lastName){
console.log("Name: "+name);
console.log("Last name: "+lastName);
console.log(this);
}
persone("Vadim","Nahornyi");
console.log("____________________________________");
var persone = function(name,lastName){
console.log("Name: "+name);
console.log("Last name: "+lastName);
console.log(this);
}
persone("Vadim","Nahornyi");
// Name: Vadim
// Last name: Nahornyi
// Window {}
// ____________________________________
// Name: Vadim
// Last name: Nahornyi
// Window {}
Вызов функции в виде функции
var Persone = {
printName:function (name) {
console.log(name);
console.log(this);
},
printLastName:function (lastName) {
console.log(lastName);
console.log(this);
}
}
Persone.printName("Vadim");
Persone.printName("Nahornyi");
// Vadim
// Persone{}
// Nahorny
// Persone{}
Вызов функции в виде метода
function Persone(name,lastName) {
console.log("Name: "+name);
console.log("Last name: "+lastName);
console.log(this);
}
var student = new Persone("Vadim","Nahornyi");
// Name: Vadim
// Last name: Nahornyi
// Persone {}
Вызов функции в виде конструктора
function sum(){
var result = 0;
for (var i=0; i<arguments.length; i++){
result += arguments[i];
}
this.result = result;
}
var MathOpeartionSum = {};
var MathOpeartionSum1 = {};
sum.apply(MathOpeartionSum,[1,2,3,4]);
console.log(MathOpeartionSum.result);
// -> 10
console.log("___________________________________");
console.log("");
sum.call(MathOpeartionSum1,10,20,30,40);
console.log(MathOpeartionSum1.result);
// -> 100
Вызов функции в с помощью метода call() и apply()
functions in javaScript
By Vadim Nahornyi
functions in javaScript
- 431