Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    javascript: visibilità variabile

    ho questo codice
    codice:
    var key = 1; //variabile oggetto window
    function a() {
    	var key = 2;
    	b();
    	function b()
    	{
    		var key = 3;
    		alert(key); //-->3
    		alert(self.key);//-->1
    	}
    }
    Mi sono chiesto se sia possibile da dentro b() risalire alla variabile locale key = 2 locale di a()

    Pietro

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Quel codice non e` JS corretto: non si possono innestare le funzioni.

    Supponendo di chiudere la funzione a() prima di aprire b(), la cosa ancora non e` possibile: per conoscere il valore di una variabile locale di un'altra funzione, devi passargliela in qualche modo (tamite una var globale, tramite il passaggo di un parametro, ...).

    E la cosa e` vera indipendentemente dal nome che dai alle variabili (nel tuo esempio usi tre variabili diverse con lo stesso nome e scope diversi), ma sarebbe altrettanto vero se i nomi fossero diversi.

    Ma dato che ti stai divertendo con le variabili, ti faccio un altro esempio (valido):
    codice:
    var i = "ciao pippo";
    alert(i);
    for(var i=0; i<3; i++) {
      alert(i);
    }
    alert(i);
    Dentro il for non e` possibile conoscere cosa contiene la variabile esterna i

    Altro esempio:
    codice:
    var i = 100;
    var t = "ciao pippo";
    alert(i+"  "+t);
    for(var i=0; i<3; i++) {
      alert(i+"  "+t);
      var t = "sono dentro";
    }
    alert(i+"  "+t);
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Io credevo che con javascript 1.2 si potessero annidare funzioni :master:

    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.