JavaScript: ordine degli argomenti delle funzioni

JavaScript: ordine degli argomenti delle funzioni

Le funzioni JavaScript possono accettare qualsiasi tipo di argomenti. Purtroppo il modo con cui JavaScript gestisce l'ordine degli argomenti non è molto rigorosa e questo può portare a risultati del tutto incoerenti. Una soluzione a questo problema consiste nell'uso di oggetti le cui proprietà fungeranno da argomenti. Questo approccio ha un enorme vantaggio: l'ordine degli argomenti non cambierà mai una volta fissati nel prototipo della funzione come proprietà dell'oggetto usato come unico argomento. L'unico accorgimento da prendere è quello di fornire dei valori predefiniti nel caso non fosse presente alcun argomento. Vediamo come fare.

Definiamo una prima funzione helper per visualizzare l'output nella console:


function Print(arg) {

	console.log(arg);

}

Quindi creiamo la nostra funzione principale:


function Def(props){


	var defaults = {
		name: 'John Doe',
		prop: 'Unknown'
	};
	
	props.name = props.name || defaults.name;
	props.prop = props.prop || defaults.prop;

	Print(props.name);
	Print(props.prop);

}

Abbiamo usato due oggetti: props è l'oggetto/argomento e defaults contiene i valori predefiniti. Ecco un esempio dell'uso di questa funzione:


Def({name: 'Gabriele', prop: 'Developer'});
Def({prop: 'Developer', name: 'Gabriele'});
Def({});

E questo è il suo output:

Gabriele
Developer
Gabriele
Developer
John Doe
Unknown

Come si può notare, cambiando l'ordine degli argomenti l'output è sempre lo stesso.

Torna su