جاوا اسکریپت (JS) Pass by Reference و Pass by Value

مقررات
Passing: برای اختصاص یک مقدار به یک متغیر یا ارسال آن به عنوان یک پارامتر.
عبور از ارزش
هر زمان که یک متغیر حاوی مقدار دیگری که یک شی یا یک آرایه نیست به همراه یک تابع به عنوان پارامتر ارسال شود، متغیر ارسال شده به یک کپی از مقداری تبدیل می شود که نگه می دارد. در نتیجه، متغیری که به تابع ارسال میشود، علیرغم هر کاری که تابع با آن انجام میدهد، ارزش خود را تغییر نمیدهد، به عنوان مثال، آن را دوباره تخصیص داده یا بهروزرسانی میکند.
let x = 60
console.log (x) // 60
function boo (y){
y = 70
console.log (y) // 70
}
foo(x)
console.log (x) // 60 : unchanged value of the x variable
از مرجع عبور کنید
هر زمان که یک متغیر حاوی مقدار دیگری که یک شی یا آرایه است به همراه یک تابع به عنوان پارامتر ارسال می شود، متغیر به عنوان ref به مقدار شی/آرایه آن به پارامتر ارسال می شود. در نتیجه، متغیری که به تابع ارسال میشود، اگر برای مثال با یک عنصر جدید از جفت کلید/مقدار بهروزرسانی شود، مقدار آن تغییر میکند.
let x = {
name:"john",
age:22
}
console.log (x) // {name:"john",age:22}
function boo (y){
y.statue = true
console.log (y) // {name:"john",age:22, status:true}
}
foo(x)
console.log (x) // {name:"john",age:22, status:true}