У стандарті ES2015 появилися стрілкові функції, які мають деякі відміності від регулярної функції.
Скорочення синтаксису
Стрілкові функції дозволяють скоротити синтаксис опису функції.
// звичайна функція
vat test= function (x){ return (x*x)-x;}
//стрілкова функція
var test2= (x) => {return (x*x)-x;};
- Самі ж стрілкові функції дозволяють опустити:
- дужки
Дужки які описують параметри функції можна не вказувати якщо там є лише один параметр.
var test2= x => {return (x*x)-x;};
- фігурні дужки і оператор return
Якщо функція має лише один вираз тоді фігурні дужки які описують тіло функції і оператор return можна не вказувати.
var test2= x => (x*x)-x;
this
Значення this у стрілковій функції відрізнається від функції так як стрілкова функція не має власного this.
У стрілковій функції this рівне зовнішньому значенню this. Так як в стрілкових функціях this прив'язується до лексичного оточення.
function test(){
alert(this);
}
test(); //window
//стрілкова функція
var test2 = ()=> { alert(this); };
test2(); //window
var ob={};
ob.test=function(){alert(this);}
ob.test(); //Object ob
//стрілкова функція
var ob2={};
ob2.test= ()=>{alert(this);};
ob2.test(); //window
Конструктор
Стрілкові функції не можна використовувати для створення об'єкту.
Звичайна функція дозволяє створювати об'єкти через функцію-конструктор.
function User(name, first){
this.name=name;
this.first=first;
}
var u=new User('Js', 'Prog');
arguments
Звичайна функція має спископодібний об'єкт arguments який містить перелік переданих параметрів.
function test(){
alert( 'параметрів: '+arguments.length);
}
test();
Стрілкова функція об'єкта arguments не має.