تفاوت عملگرهای rest و spread

به نام خدا با سلام خدمت کد ایتی های عزیز در ادامه سری مقالات اموزشی جاوا اسکریپت این جلسه به تفاوت عملگرهای rest و spread پرداخت با ما همراه باشید.

عملگر Rest و Spread دو ویژگی جاوا اسکریپت هستند که در ES6 معرفی شده اند. آنها کاملاً متفاوت کار می کنند، اما سینتکس مشابه آنها (سه تا نقطه …) در هنگام کار با آنها برخی تصورات نادرست را به همراه دارد.

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

عملگر  rest برای گروه بندی آرگومان های باقی مانده در توابع استفاده می شود.

از طرف دیگر عملگر  spread برای تقسیم(پخش) گروهی از مقادیر در جاوا اسکریپت استفاده می شود.

تفاوت عملگرهای rest و spresd

تفاوت عملگرهای rest و spresd

مقالات پربازدید: کاتلین چیست؟ چرا باید زبان برنامه نویسی کاتلین را یاد بگیریم؟

The Rest Operator (عملگر Rest)

این عملگر برای دریافت همه یا باقی آرگومان ها در یک تابع به عنوان یک آرایه استفاده می شود. مثلا:

مهم نیست  آرگومان هایی که هنگام استفاده به این تابع ارسال می شوند، تنها آرگومان اول در نظر گرفته می شود. برای بدست آوردن آرگومان های بیشتر، اعلان تابع ممکن است حاوی چیزی مانند  args1, args2, args3 باشد، اما برای چه تعدای؟ رویکرد  args1, args2 برای توابعی که فقط به تعداد معینی آرگومان اهمیت می‌دهند عالی است، اما برای آرگومان‌های نامشخص،  rest کار را آسان می‌کند.

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

همین تکه کد با عملگر  rest:

rest  مفید تر از arguments است زیرا:

  • به شما امکان می دهد آرایه آرگومان ها را هر چه دوست دارید نام گذاری کنید (همانطور که در بالا دیدیم، args)
  • ان آرایه ای را برمی گرداند، در حالی که  arguments  یک شی هستند، بنابراین، روش های آرایه را می توان بر روی نتیجه  rest‘sانجام داد.
  • در حالی که arguments ها همه آرگومان های تابع را دریافت می کنند، پس از انتخاب برخی از آرگومان ها، از rest  می توان برای دریافت آرگومان های باقی مانده استفاده کرد.به عنوان مثال:

توجه داشته باشید که عدد اول را می‌توان با args[0] نیز دریافت کرد، اما با rest ، می‌توانیم مقادیری را که می‌خواهیم درست از اعلان آرگومان‌ها انتخاب کنیم.

Spread Operator (عملگر spread)

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

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

برای اشیا، نتیجه عملگر spread یک شی است زیرا اشیاء بر اساس ماهیت کلید-مقدار آنها هستند.

Array expressions

سینتکس:

برای مثال:

با توجه به موارد بالا، متوجه خواهید شد که چگونه مقادیر oldArray در آرایه های جدید پخش شده اند.

String expressions

سینتکس:

این شبیه به  string.split است. مثلا:

Function expressions

سینتکس:

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

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

Object expressions

سینتکس:

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

برای newObj1، می‌توانید ببینید که چگونه ویژگی‌های شی قدیمی پخش شده‌اند.

همچنین برای newObj2، می‌توانید ببینید که چگونه ویژگی‌های شی قدیمی پخش شده‌اند، و یک ویژگی short جدید اضافه شده است.

برای newObj3، می‌توانید ببینید که چگونه ویژگی‌های شی قدیمی پخش شده‌اند، و ویژگی score در همان زمان اصلاح شده است. توجه داشته باشید که اگر score:40 قبل از گسترش ویژگی های شی قدیمی اعلام شود، score:23 در اولویت خواهد بود.

عملگر spread به ویژه در عبارات آرایه و شی بسیار مفید در نظر گرفته می شود زیرا تغییر ناپذیری ( immutability) اشیاء جاوا اسکریپت را تضمین می کند.

در کل rest و spread دو ویژگی خاص هستند که توسعه را آسان تر می کنند. آنها همچنین مزایای جالبی در هنگام استفاده از ساختار آرایه و شی دارند.

خب دوستان عزیز به پایان مقاله تفاوت عملگرهای rest و spread در جاوا اسکریپت رسیدیم امیدواریم برا شما مورد مفید قرار گیرد.
سایر مقالات:
برای امتیاز به این نوشته کلیک کنید!
[کل: 2 میانگین: 5]
اشتراک‌گذاری

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *