Il principio fondamentale che influisce maggiormente sulla coercizione di tipo è essere liberale in ciò che accetti . Per una lingua con tipi di argomenti fanno parte di una firma di funzione, puoi gestire, ad esempio, una funzione log
richiedendo string
parametri e sovraccarichi per object
e integer
e whatnot.
In JavaScript, che è così tipicamente digitato che dovresti trattare gli argomenti della funzione semplicemente come un suggerimento di denominazione per i primi argomenti X passati, puoi usare la coercizione per aiutare a gestire rapidamente la maggior parte dei tipi di argomenti. E, naturalmente, è un aspetto fondamentale dell'ispezione delle feature. Considera quanto segue, che prenderà qualsiasi numero di argomenti e passali a console.log
come una singola stringa separata da spazio:
function toLog() {
if(arguments.length && window.console && window.console.log) {
var ArgString = "";
for(var a = 0; a < arguments.length; a++) {
ArgString += arguments[a];
}
console.log(ArgString);
}
}
Quanto sopra utilizza la coercizione del tipo in tre modi che sono estremamente utili per JavaScript:
- La proprietà
arguments.length
viene convertita da un numero in un valore booleano per vedere se ci sono elementi in argomenti pseudo-array .
- Sia l'oggetto globale
console
che il suo metodo log
vengono convertiti da oggetti in booleano se non sono nulli, il che impedisce un (vecchio?) bug di IE in cui console.log
causerebbe errori se chiamato senza la console di sviluppo aperto.
- Impostando
ArgString
su una stringa vuota ""
sull'inizializzazione, segnaliamo all'interprete di forzare tutti gli argomenti anche alle stringhe. Quale non è tutto ciò che è utile su un browser moderno, ma funziona per il nostro esempio.