beh, è logico che se sei tu a dichiarare la variabile subito prima non serve a niente fare alcuna verifica ... sai già di che tipo è e che valore contiene, o sbaglio?Originariamente inviato da whisher
questa però non mi torna ...
non nei mieiOriginariamente inviato da whisher
ero convinto che si dovesse usare sempre window.
almeno in tutti gli esempi anche in MDC ci mettono window.... comunque sia sempre il solito discorso, JS è come se fosse sempre eseguito in questo modo
quindi window.this, window.window, window.self, window.window.window ... sono tutti riferimenti al globale window ... ergo aggiungere window davanti a qualsiasi cosa è ridondante e non serve a niente a meno che tu non abbia definito una variabile/funzione con lo stesso nome all'interno di uno scope diversocodice:with(window){ // tutto il JS che vuoi }
solitamente in questo singolo caso si preferisce usare il self (anche this ma è più particolare) giusto perchè è più corto a scriversicodice:function pippo(callback){ function setTimeout(delay){ (self || window || this).setTimeout(callback, delay); }; setTimeout(1000); }; pippo(function(){ alert("è passato circa un secondo"); });
Per concludere, qualora tu abbia paura che altri possano ridefinire window o self, per avere in qualunque parte del codice il riferimento globale puoi fare così
caso atipico poichè sul global scope non puoi ridefinire window ... quindi, alla fine, se non hai dichiarato variabili usando nomi globali di funzione o di variabili stesse, scrivere window.quelloCheTiPare o quelloCheTiPare e basta è la stessa identica cosa solo che nel secondo caso è addirittura meglio perchè:codice:// pippo sarà === a window.pippo e === a self.pippo o this.pippo var pippo = "function(){alert(window.pippo); alert((function(){return this})().pippo)}"; (function(){ // se ridefinite possono confondere var self = "bye bye", window = self; alert(window.pippo); // undefined alert(self.pippo); // undefined alert(pippo); // stringa funzione eval(pippo)(); // prima undefined poi stringa funzione })();
window.quelloCheTiPare cerca la variabile globale window e poi cerca quelloCheTiPare dentro la stessa
mentre
quelloCheTiPare cerca direttamente nella variabile globale, 1 passaggio in meno (appunto perchè è ridondante)
spero sia più chiaro![]()


... comunque sia sempre il solito discorso, JS è come se fosse sempre eseguito in questo modo
Rispondi quotando