Guardando tra la prima riga di codice nel file di JS minimizzato e unminified di Bootstrap, c'è una discrepanza immediata:Perché i minifigure di Javascript convertono da === a ==?
// bootstrap.js
if (typeof jQuery === 'undefined') { ... }
vs.
// bootstrap.min.js
if("undefined"==typeof jQuery)...
(Guardate voi stessi: bootstrap.js e bootstrap.min.js)
Sono confuso perché questo è permesso. La mia (forse ingenua) comprensione è che ===
è sempre un guadagno in termini di prestazioni e spesso impedisce risultati inattesi (falsi confronti con 0 o ""
, ad esempio). Sembrerebbe che i piccoli guadagni in filesize siano persi nelle prestazioni e il potenziale per risultati errati. Qualcuno può far luce qui?
'typeof' restituisce sempre una stringa, quindi' === 'non è necessario. Il minificatore o qualche altro processore su cui è stato eseguito il file avrebbe potuto riconoscerlo. Non c'è alcun potenziale per un risultato errato, e anche se questa linea dovesse funzionare abbastanza spesso da essere un collo di bottiglia, qualsiasi differenza di prestazioni sarebbe JITted away. – user2357112
Tutti rispondono senza comprendere completamente la domanda. – ndugger
@NickDugger che non è vero; la domanda è abbastanza chiara. Il vantaggio prestazionale di '===' è rilevante solo quando gli operandi non sono dello stesso tipo. – Pointy