Visualizzazione dei risultati da 1 a 5 su 5

Discussione: shadowing

  1. #1

    shadowing

    Salve a tutti programmatori! Sto leggendo il libro you don't know JS ed essendo in inglese (anche se me la cavo) non ho capito bene un concetto: lo "shadowing" e cosa centra con la proprietà window.. sareste gentili da illuminarmi

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    4,713
    non ho capito bene un concetto: lo "shadowing"
    Personalmente non ho mai usato quel termine ma ho letto a cosa si riferisce e capisco bene cosa significa.

    In programmazione viene definito "scope shadowing" quel meccanismo in cui avendo definito una variabile con un certo nome (identificatore) visibile per un certo ambito, lo stesso nome può essere usato in ambiti più interni per definire un'altra variabile che sostanzialmente va a "nascondere", all'interno di quest'ambito, il valore della variabile definita nell'ambito esterno.

    Semplice esempio:
    codice:
    var x = 1; // variabile globale (questa è anche accessibile usando window.x)
    
    console.log(x); // output: 1
    
    (function(){ // funzione auto-eseguita (quindi si crea un ambito locale)
    
        console.log(x); // output: 1 (riferimento generico alla variabile x)
    
        console.log(window.x); // output: 1 (riferimento specifico alla stessa variabile x)
    
    })();
    
    (function(){ // altra funzione auto-eseguita
    
        var x = 2; // concetto di "shadowing"; usando lo stesso nome (identificatore) x, questa variabile locale "adombra" quella globale (dell'ambito esterno)
    
        console.log(x); // output: 2 (il valore della variabile locale)
    
        console.log(window.x); // output: 1  (usando window ci si riferisce in modo specifico alla variabile globale x)
    
    })();
    Fai sapere se è più chiaro o se servono ulteriori spiegazioni.

    Per comprendere questo concetto è opportuno avere ben chiaro cosa sia lo scope, cioè l'ambito di visibilità delle variabili.

    e cosa centra con la proprietà window
    Forse è più specifico parlare di "oggetto window" (il cui ambito è quello globale), se è questo ciò a cui ti riferisci. Magari l'esempio può fornire una chiave di lettura ma ad ogni modo il discorso andrebbe contestualizzato per poterti fornire una risposta precisa.
    Prima di postare considera che tra i link utili puoi trovare il 75% delle risposte alle tue domande; il 20% tra i post del forum; il 15% sul web.
    Ti resta... humm spè

    Le cattive domande sono quelle che non meritano risposta, le buone domande sono quelle che non hanno risposta
    L'Itailano non e nu'opnioine. E' improntate uslaro correattemtne sul froum. Garize!

  3. #3
    Quindi se ho ben capito... Anche se è presente una variabile con un nome (ad esempio x) è possibile crearne un'altra con lo stesso nome ma quest'ultima fa riferimento allo scope in cui è contenuta "ombrando" l'altra. Giusto?

    p.s. naturalmente la prima variabile ha scope globale mentre la seconda globale

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    4,713
    In linea di massima è così.

    p.s. naturalmente la prima variabile ha scope globale mentre la seconda locale
    fixed

    Sì ma questo è valido ad ogni livello, non per forza con variabili globali.

    Lo stesso concetto infatti vale in situazioni in cui si hanno funzioni nidificate, quindi tra i diversi ambiti delle funzioni (function scope), oppure definendo variabili con let o const a livello di blocco (block scope) e qualsiasi altro caso in cui si ha a che fare con la gerarchia tra diversi scope.

    In sostanza, qualsiasi variabile definita in qualsiasi ambito viene "nascosta" da una variabile, che abbia lo stesso nome, definita in un ambito più interno.
    Prima di postare considera che tra i link utili puoi trovare il 75% delle risposte alle tue domande; il 20% tra i post del forum; il 15% sul web.
    Ti resta... humm spè

    Le cattive domande sono quelle che non meritano risposta, le buone domande sono quelle che non hanno risposta
    L'Itailano non e nu'opnioine. E' improntate uslaro correattemtne sul froum. Garize!

  5. #5
    Tutto chiaro! Grazie mille!

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 © 2020 vBulletin Solutions, Inc. All rights reserved.