Sobes.tech
Middle

რა განსხვავებაა სროლა ფუნქციასა და ჩვეულებრივი სახელწოდების ფუნქციას შორის?

sobes.tech AI

პასუხი AI-სგან

JavaScript-ში სლაკური ფუნქციები განსხვავდება ჩვეულებრივი სახელწოდებული ფუნქციებისგან რამდენიმე ძირითადი საკითხით:

  • this კონტექსტი: სლაკური ფუნქციები არ აქვთ საკუთარი this; ისინი მემკვიდრეობით იღებენ this-ს გარშემომყოფ ლექსიკალურ კონტექსტიდან. ჩვეულებრივი ფუნქციები აქვს საკუთარი this, რომელიც დამოკიდებულია გამოძახების მეთილზე.
  • arguments-ის არარსებობა: სლაკური ფუნქციები არ აქვთ arguments ობიექტი. არგუმენტების მისაწვდომად უნდა გამოიყენოთ პარამეტრები ან რესტ პარამეტრები.
  • შეუძლებელია როგორც კონსტრუქტორი გამოყენება: სლაკური ფუნქციები ვერ გამოიძახებთ new-ით.
  • სინტაქსი: სლაკური ფუნქციები მოკლე და მოსახერხებელია მოკლე ფუნქციების დაწერაში.

მაგალითი:

const obj = {
  value: 42,
  regularFunc: function() { return this.value; },
  arrowFunc: () => this.value
};

console.log(obj.regularFunc()); // 42
console.log(obj.arrowFunc());   // არახელსაყრელი, რადგან `this` არ მიუთითებს `obj`-ზე