تفاوت rest و spread در js و مقایسه ش در php

همون طور که در جریان هستید از ورژن ۶ به بعد اکما اسکریپت این دوتا ویژگی خیلی خوب اضافه شد که باعث شد جاوااسکریپت هم مثل باقی زبان های برنامه نویس پاس دادن آرگومان های خودکار رو به زبانش اضافه کنه ولی بعضی ها هنوز تو این زمینه تازه واردن و این دو چ خاصیتی دارند ؟!

spread

داخل زبان php ورژن های ۵٫۶ به بعد ما برای ساخت این ویژگی از فانکشن call_user_func_array استفاده میکردیم تابتونیم تعداد نامحدودی argument به فانکشن منتقل کنیم به این کار در جاوا اسکریپت spread گفته میشه خیلی شبیه برنامه نویسی جاوا و یا php7 شده برای ساخت این ویژگی ما نیاز به تعریف یک آرایه داریم به مثال زیر توجه کنید

myfunction(arg1 , arg2 , arg3){
  ...
}
let nums = ["amir","amin","nima"] ;
myfunction( ...nums ) ; 

داخل کد بالا ما یه آرایه به نام nums تعریف کردیم و مقادیری رو به عنوان پیش فرض بهش assignment کردیم وقتی ما میخواستیم به و به عنوان آرگومان به myfunction دادیم تو روند عادی بدون سه نقطه ( … ) ما یه آرایه به سمت فانکشن میفرستادیم ولی با این سه نقطه ما سه متغییر به سمت فانکشن ارسال کردیم ! arg1 برابر با amir , …. خوب فک کنم مفهمومش خیلی واضح بود همونطور که گفتم این کار در پی اچ پی ۵٫۶ به وسیله call_user_func_array انجام میشد و متغییر ها به صورت زیر به تابع ارسال میشدن :

function spread($arg1 , $arg2 , $args3){
  
}
call_user_func_array("spread" , ['amir','amin','nima']);

rest

ولی در رست قضیه درون تابع اتفاق میوفته یعنی زمانی که ما داخل تابع تعداد زیادی آرگومان باید دریافت کنیم ما به وسیله رست میتونیم این آرگومان ها رو هندل کنیم داخل php ما به وسیله func_get_args میومدیم تمام ورودی ها رو به صورت ارایه دریافت میکنیم خوب نمونه کد rest در js :

function spread(...nums){
  console.log(nums);
}
spread('amir','amin','nima') ;

//output 
["amir", "amin", "nima"]

function sample() {
    $arguments = func_get_args() ;
    var_dump($arguments)
}

call_user_func_array("sample" , ['salam' , 'khobi' , 'chetori']) ;

امیداورم با این مبحث آشنا شده باشید و فهمیده باشید چی به چیه و واقعا خیلی کاربردیه من تو آموزش های قبلی داخل mvc از call_user_func استفاده کردم و میخواستم بدونید داخل js هم این امکان وجود داره و ترکیب spread و rest یه چیز جالبیه ….


0| از0رای

مطالب مشابه


0 دیدگاهافزودن