Αποδόμηση παραμέτρων συναρτήσεων στην JavaScript
Η αποδόμηση έχει μια ακόμη πολύ σημαντική περιοχή εφαρμογής - τη μεταβίβαση παραμέτρων συναρτήσεων. Η ουσία είναι η εξής: εάν μια συνάρτηση δέχεται ως παράμετρο έναν πίνακα, μπορούμε να ορίσουμε ακριβώς στη δήλωση της συνάρτησης το πώς να αποδομήσουμε αυτόν τον πίνακα.
Ας δούμε ένα παράδειγμα. Ας υποθέσουμε ότι έχουμε μια συνάρτηση που δέχεται ως παράμετρο έναν πίνακα με έτος, μήνα και ημέρα:
func([2025, 12, 31]);
Ας ορίσουμε ακριβώς στην παράμετρο της συνάρτησης, σε ποιες μεταβλητές πρέπει να διασπαστεί αυτός ο πίνακας:
function func([year, month, day]) {
console.log(year); // θα εμφανίσει 2025
console.log(month); // θα εμφανίσει 12
console.log(day); // θα εμφανίσει 31
}
Το παραπάνω κατασκεύασμα πρέπει να θεωρηθεί ως μία παράμετρος της συνάρτησης. Μπορούμε αν θέλουμε να προσθέσουμε και άλλες παραμέτρους:
func('str1', [2025, 12, 31], 'str2');
function func(param1, [year, month, day], param2) {
console.log(param1); // θα εμφανίσει 'str1'
console.log(year); // θα εμφανίσει 2025
console.log(month); // θα εμφανίσει 12
console.log(day); // θα εμφανίσει 31
console.log(param2); // θα εμφανίσει 'str2'
}
Στο επόμενο παράδειγμα, ως πρώτη και δεύτερη παράμετρο της συνάρτησης μεταβιβάζονται πίνακες και αποδομούμε και τους δύο:
func([2025, 12, 31], [2026, 11, 30]);
function func([year1, month1, day1], [year2, month2, day2]) {
console.log(year1); // θα εμφανίσει 2025
console.log(month1); // θα εμφανίσει 12
console.log(day1); // θα εμφανίσει 31
console.log(year2); // θα εμφανίσει 2026
console.log(month2); // θα εμφανίσει 11
console.log(day2); // θα εμφανίσει 30
}
Μετατρέψτε τον ακόλουθο κώδικα μέσω αποδόμησης σύμφωνα με τη θεωρία που μελετήθηκε:
function func(employee) {
let name = employee[0];
let surname = employee[1];
let department = employee[2];
let position = employee[3];
let salary = employee[4];
}
func( ['John', 'Smit', 'development', 'programmer', 2000] );
Μετατρέψτε τον ακόλουθο κώδικα μέσω αποδόμησης σύμφωνα με τη θεωρία που μελετήθηκε:
function func(employee) {
let name = employee[0];
let surname = employee[1];
let info = employee[2];
}
func( ['John', 'Smit', 'development', 'programmer', 2000] );
Μετατρέψτε τον ακόλουθο κώδικα μέσω αποδόμησης σύμφωνα με τη θεωρία που μελετήθηκε:
function func(employee) {
let name = employee[0];
let surname = employee[1];
let department = employee[2];
let position;
if (arr[3] !== undefined) {
position = arr[3];
} else {
position = 'junior';
}
}
func( ['John', 'Smit', 'development'] );
Μετατρέψτε τον ακόλουθο κώδικα μέσω αποδόμησης σύμφωνα με τη θεωρία που μελετήθηκε:
function func(department, employee, hired) {
let name = employee[0];
let surname = employee[1];
let year = hired[0];
let month = hired[1];
let day = hired[2];
}
func( 'development', ['John', 'Smit'], [2018, 12, 31] );