Questo è più di una questione di convenienza di uno di prestazioni (anche se document.head
dovrebbe avere un beneficio trascurabile). Usa quello che vuoi, oppure, usa uno come fallback per l'altro (come fa il tuo codice di esempio). Avere il fallback è saggio, dal momento che document.head
non è supportato in IE 6-8.
Non è probabile che lo getElementsByTagName
sarà presto deprecato, quindi questo non è un ottimo esempio di quando è opportuno fornire un fallback. Si può tranquillamente usare la rotta più prolissa da sola e godere del supporto nel futuro.
I migliori esempi di questi tipi di cose sarebbero gli eventi e il modo in cui vengono passati nei browser moderni, rispetto ai browser più vecchi. Non è raro vedere qualcosa di simile:
function callback (event) {
var id = (event || window.event).target.id;
}
In questo caso, però, la porzione window.event
è necessario per il supporto legacy. Se l'oggetto event
è undefined
, si assume che l'evento sia membro dell'oggetto window
. Man mano che i browser maturano, window.event
cessa di essere una cosa, e questi test restituiscono all'unanimità event.target.id
invece.
Anche in questo caso, il tuo caso è un po 'diverso come getElementsByTagName
probabilmente non sarà mai deprecato o svanire come fatto window.event
.
Si può anche fare 'document.querySelector (" head ")'. È solo una questione di scelta. –
Quasi non può diventare più veloce di avere un riferimento diretto. Quindi 'document.head' dovrebbe essere più veloce di una magnitudine, vedi http://jsperf.com/document-head-vs-getelementsbytagname – jAndy