Різниця між стрілковою і звичайною функцією

Публікації

У стандарті 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 не має.

2020-07-09 07:53:59

Тільки зареєстровані користувачі можуть писати коментарі.