خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

6 تفاوت بین توابع پیکان و توابع منظم در جاوا اسکریپت

عملکردهای پیکان فشرده‌تر هستند، اما آیا می‌دانستید تفاوت‌های دیگری نیز وجود دارد؟

توابع بخش اساسی جاوا اسکریپت هستند که برای نوشتن کدهای قابل استفاده مجدد باید از آنها استفاده کنید. دو نوع اصلی تابع، توابع منظم و پیکانی هستند و راه های زیادی برای تعریف آنها وجود دارد.

اگرچه آنها نیازهای مشابهی را برآورده می کنند، اما چند تفاوت اساسی دارند که می تواند اساساً بر نحوه استفاده شما از آنها در کد تأثیر بگذارد. همه چیز را در مورد چندین تفاوت بین توابع پیکان و توابع معمولی بیاموزید.

1. تفاوت های نحوی

سینتکسی که هنگام توسعه توابع جاوا اسکریپت انتخاب می‌کنید تأثیر زیادی بر ساده بودن خواندن و درک کد شما دارد. نحو توابع منظم و فلش به طور قابل توجهی متفاوت است، که بر نحوه نوشتن و استفاده از آنها تأثیر می گذارد.

توابع پیکان جاوا اسکریپت از ساختار زبان کوچکتری استفاده می کنند که قابل درک تر است. می توانید از آنها برای ایجاد توابع با ترکیب آنها در یک عبارت یا عبارت واحد استفاده کنید.

const add = (a, b) => a + b;

در این مثال تابع add دو ورودی a و b را می پذیرد و مجموع آنها را برمی گرداند. علامت => این را به عنوان یک تابع فلش تعریف می کند.

از سوی دیگر، تعریف یک تابع منظم مستلزم استفاده از کلمه کلیدی تابع، با نحو پرمخاطب تر است، همانطور که در این مثال نشان داده شده است:

function add(a, b) {
  return a + b;
}

در این مثال، کلمه کلیدی تابع یک تابع منظم را تعریف می‌کند که از پرانتزهای فرفری و دستور بازگشت نیز استفاده می‌کند.

توابع منظم برای نحو پیچیده ای که به عبارات یا عبارات متعدد نیاز دارند مفیدتر هستند. در مقابل، توابع جهت دار از نحو مختصرتری استفاده می کنند که می تواند خواندن و درک کد شما را آسان تر کند.

2. تفاوت های محدوده

اصطلاح “scoping” چگونگی دسترسی به متغیرها و توابع داخلی یک تابع را توصیف می کند. در جاوا اسکریپت، شما متغیرها و توابع را در سراسر کد خود با استفاده از scope تعریف کرده و به آنها دسترسی دارید. محدوده متمایز آنها می تواند به طور قابل توجهی بر نحوه نوشتن و استفاده از پیکان جاوا اسکریپت و توابع منظم تأثیر بگذارد.

مطلب مرتبط:   توضیح حرکت بازیکن در یونیتی: بدن صلب و برخورد دهنده

در محدوده‌بندی، نحوه برخورد توابع فلش با این کلمه کلیدی به طور قابل توجهی با عملکردهای معمولی متفاوت است. توابع منظم خود این کلمه کلیدی را تعریف می کنند. بنابراین، بسته به زمینه ای که تابع را در آن فراخوانی می کنید، می تواند تغییر کند.

از طرف دیگر، به دلیل اینکه آنها کلمه کلیدی this را مشخص نمی کنند، توابع پیکان از همان محدوده استاتیک اطراف خود استفاده می کنند.

برای مشاهده تفاوت، مثال زیر را بررسی کنید. فرض کنید یک شی شخص با ویژگی name و متدی به نام sayName() دارید که نام شخص را با استفاده از یک تابع معمولی ثبت می کند:

const person = {
  name: 'John,'

  sayName: function() {
    console.log(this.name);
  }
};

person.sayName(); // logs 'John'

در اینجا، تابع sayName() معمولی متدی از شی شخص است و کلمه کلیدی this در داخل آن تابع به آن شی شخص اشاره دارد.

حالا بیایید همین کار را با یک تابع فلش امتحان کنیم:

const person = {
  name: 'John',

  sayName: () => {
    console.log(this.name);
  }
};

person.sayName(); // logs undefined

از آنجایی که تابع پیکان استفاده شده در متد sayName() این کلمه کلیدی را برای خود تعریف نمی کند، از این محدوده استاتیکی استفاده می کند که آن را احاطه کرده است. در این مورد، این دامنه جهانی نمونه است.

در نتیجه، زمانی که person.sayName() را فرا می‌خوانید، به جای «جان»، تعریف نشده می‌شوید. این می تواند به طور قابل توجهی بر نحوه نوشتن و استفاده از توابع در کد شما تأثیر بگذارد.

3. از موارد و بهترین شیوه ها استفاده کنید

توابع منظم برای توابعی که به این کلمه کلیدی خاص خود نیاز دارند، مانند متدهای موجود در یک شی، بهتر مناسب هستند.

توابع پیکان برای برنامه نویسی کاربردی و تماس هایی که به این کلمه کلیدی نیاز ندارند، مناسب تر هستند.

4. تابع تفاوت اتصال

تابع binding اصطلاحی است که برای توصیف رابطه بین این کلمه کلیدی و توابع در کد شما استفاده می شود. تغییرات در اتصال تابع بین توابع فلش و توابع عادی می تواند به شدت بر نحوه ساخت و استفاده از توابع پیکان تأثیر بگذارد.

مطلب مرتبط:   نحوه ادغام CMS محتوا با React

استفاده از این کلمه کلیدی آن را در توابع منظم منحصر به فرد می کند و با اشیاء مختلف بر اساس روشی که برای فراخوانی تابع استفاده می شود، ارتباط برقرار می کند. اتصال تابع یکی از مهم ترین تمایز بین توابع منظم و پیکانی است.

در مقابل، توابع جهت دار این کلمه کلیدی را ندارند. بلکه آن را از حوزه های اطراف دریافت می کنند.

برای درک بیشتر این تفاوت، به یک مثال نگاه می کنیم. فرض کنید یک شی شخص با یک فیلد نام و متدی به نام sayName() دارید که از یک تابع معمولی برای ثبت نام شخص استفاده می کند:

const person = {
  name: 'John',

  sayName: function() {
    console.log(this.name);
  }
};

const anotherPerson = {
  name: 'Jane'
};

person.sayName.call(anotherPerson); // logs 'Jane'

در این مثال، شما متد ()sayName شی شخص را با مقدار otherPerson با استفاده از متد call() فراخوانی می کنید. به همین دلیل، متد sayName()، این، کلمه کلیدی به شی otherPerson محدود می شود و به جای «جان»، «جین» را ثبت می کند.

بیایید اکنون از همان مورد با یک تابع فلش استفاده کنیم:

const person = {
  name: 'John',

  sayName: () => {
    console.log(this.name);
  }
};

const anotherPerson = {
  name: 'Jane'
};

person.sayName.call(anotherPerson); // logs undefined

از آنجایی که تکنیک sayName() کلمه کلیدی خود را ندارد، در این مثال از یک تابع پیکان درون آن استفاده می کنید. در این حالت تابع arrow ویژگی های محدوده اطراف را که همان محدوده جهانی است به ارث می برد.

این به این معنی است که وقتی person.sayName.call (یکی دیگر از افراد) را اجرا می کنید، تابع پیکان این کلمه کلیدی شی سراسری باقی می ماند و تعریف نشده جای جین را در گزارش می گیرد.

اگر نیاز دارید تابعی را به این مقدار خاص متصل کنید، ممکن است یک تابع معمولی ترجیح داده شود. با این حال، اگر نیازی به اتصال یک تابع به این مقدار خاص ندارید، یک تابع فلش ممکن است کوتاه‌تر و درک آن آسان‌تر باشد.

مطلب مرتبط:   چگونه نمودارها را به برنامه React خود اضافه کنید

5. بازگشت ضمنی

تابع پیکان یک ویژگی بازگشت ضمنی دارد. اگر بدنه تابع از یک عبارت واحد تشکیل شده باشد، توابع آن عبارت را برمی گرداند.

به عنوان مثال:

const double = (x) => x * 2;

این تابع فلش دو برابری را از یک پارامتر برمی گرداند. شما نیازی به استفاده از کلمه کلیدی بازگشتی صریح ندارید زیرا بدنه تابع فقط یک عبارت دارد.

6. تفاوت های سازگاری

تفاوت‌های سازگاری به عملکردهای پیکان اضافه شده ECMAScript 6 اشاره دارد که ممکن است با مرورگرها یا محیط‌های قدیمی‌تر کار نکند. از سوی دیگر، توابع منظم از ابتدای جاوا اسکریپت وجود داشته اند و به طور گسترده ای پشتیبانی می شوند.

در اینجا یک تصویر از یک تابع فلش است که ممکن است در شرایط ثابت تر کار نکند:

const add = (a, b) => a + b;

زیر یک تابع منظم قابل مقایسه است که باید در بیشتر موقعیت ها کار کند:

function add(a, b) {
  return a + b;
}

هنگام هدف قرار دادن محیط‌های قدیمی‌تر برای اطمینان از سازگاری، از توابع معمولی به جای عملکردهای پیکانی استفاده کنید. با این حال، توابع پیکان می‌توانند نحوی ارائه دهند که درک آن آسان‌تر و فشرده‌تر در هنگام کار با مرورگرها و محیط‌های مدرن باشد.

انتخاب بین توابع پیکان و توابع معمولی در جاوا اسکریپت

در جاوا اسکریپت، فلش و توابع منظم دارای ویژگی ها و برنامه های کاربردی هستند. توابع پیکان یک نحو ساده دارند، این واژه کلیدی را از زمینه استفاده به ارث می برند در حالی که توابع معمولی سازگارتر هستند و می توانند با موقعیت های پیچیده تری مقابله کنند.

بسیار مهم است که بدانید آنها چگونه متفاوت هستند و چگونه از آنها مطابق با الزامات کد خود استفاده کنید. هنگام انتخاب نوع عملکرد برای استفاده، باید تفاوت‌های سازگاری را نیز در نظر بگیرید.

در نهایت، پیکان جاوا اسکریپت و توابع منظم ابزارهای قدرتمندی هستند که به شما کمک می کنند کدهای تمیزتر و کارآمدتر بنویسید.