ES6 - Default Values
אם הייתם רוצים ליצור בג׳אווהסקריפט פונקציה אשר מקבלת פרמטר עם ערך ברירת מחדל, יכול להיות שהייתם כותבים משהו כזה:
function foo(x) {
x = x || 2;
console.log(x);
}
foo(5); // 5
foo(); // 2הרעיון הוא שהסימן || בודק האם הערך הראשון מחזיר true - אם כן, הוא בוחר את הערך הזה ומציב אותו במשתנה. אם לא, הוא מציב את הערך השני במשתנה.
אבל מה קורה אם נקרא לפונקציה עם הערך 0?
foo(0); // 2מאחר ש-0 בג׳אווהסקריפט נחשב לערך שמחזיר false, הערך שנבחר הוא 2. לכן, הדרך הנכונה לבדוק אם הפונקציה נקראה עם פרמטר היא כך:
x = x !== undefined ? x : 2;כאן אנו בודקים אם יש ערך כלשהוא שהוצב ב- x. אם כן, זה הערך שנבחר. אם לא, נבחר את הערך השני.
נכון - זה לא ברור במיוחד. מזל שיש את ES6.
ערכי ברירת מחדל ב- ES6
עם ES6 הכל נהיה פשוט יותר. כך נכתוב פונקציה המקבלת פרמטר עם ערך ברירת מחדל:
function foo(x = 2) {
console.log(x);
}
foo(5); // 5
foo(0); // 0
foo(); // 2נוסף על כך, ישנה אפשרות לכתוב ביטוי (expression) בתור ערך ברירת מחדל לפרמטר. בצורה זו נוכל לקרוא לפונקציה אחרת ולהציב את הערך שהיא מחזירה לפרמטר:
function bar() {
return "hola!";
}
function foo(x = bar()) {
console.log(x);
}
foo("hello!"); // "hello!"
foo(); // "hola!"איך אפשר להשתמש בזה פרקטית? דוגמה אחת יכולה להיות יצירת ID ייחודי למשתמש, אם לא העברנו לפונקציה את ה- ID כפרמטר:
function generateID() {
// return random id number
}
function registerUser(id = generateID()) {
// register user
}