بررسی arguments در توابع جاوااسکریپت

آرگومان‌ها ‌arguments یک آبجکت شبیه به آرایه هست که توی همه توابع وجود داره و شامل آرگومان‌هایی هست که به تابع پاس داده شده:

function commit() {
    console.log(arguments); // [Arguments] { '0': 1, '1': 2, '2': 4 }
    console.log(arguments[0]); // 1
}

commit(1, 2, 4)

به arguments گفته میشه آبجکت شبیه آرایه. این دلیل که شبیه به یک آرایه هست که index اون از صفر شروع میشه و همچنین شامل پراپرتی length هست. اما متدهایی که یک آرایه داره مثل foreEach و map رو نداره.

همچنین Arrow Function ها چنین متغیری ندارن:

commit = () => {
    console.log(arugments);
}

commit(1, 2, 4); // ReferenceError: arugments is not defined

پس بجای اون می‌تونیم از پارامتر rest یا سه نقطه استفاده کنیم:

commit = (...args) => {
    console.log(args);
}

commit(1, 2, 4); // [ 1, 2, 4 ]

پارامتر rest یک آرایه واقعی هست و همه‌ی متدها و پراپرتی‌هایی که یک آرایه معمولی داره رو شامل میشه.


منبع:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments

https://dev.to/macmacky/70-javascript-interview-questions-5gfi