نکته #3
پارامترهای تابع هم مثل متغیرهای محلی رفتارهای خاص دارند
متغیر ها
پارامترهای تابع هم مثل متغیرهای محلی رفتارهای خاص دارند
متغیر ها
نکته #3
پارامترهای تابع در JavaScript در Scope تابع قرار میگیرند. اما نکتهی جالب این است که مقدارهای پیشفرض پارامترها میتوانند به پارامترهای قبلی دسترسی داشته باشند، ولی نه به پارامترهای بعدی.
function test(a, b = a) {
console.log(a, b);
}
test(10); // 10 10
===========
function test(a = b, b = 20) {
console.log(a, b);
}
test(); // ReferenceError
خیلیها فکر میکنند همهی پارامترها قبل از اجرای تابع آماده هستند، اما مقداردهی پیشفرض از چپ به راست انجام میشود.
مثال صحیح:
function createUser(name, username = name.toLowerCase()) {
return {
name,
username
};
}
console.log(createUser("Ali"));
// { name: "Ali", username: "ali" }
===========
مثال اشتباه :
function createUser(username = name.toLowerCase(), name) {
return {
name,
username
};
}
createUser(undefined, "Ali");
// ReferenceError
#3a40ee
1