Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Differenza tra & ed &&

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    74

    Differenza tra & ed &&

    Sto leggendo la differenza tra & ed && sulla guida di javascript ma non riesco a capire l'esempio che propone l'autore della guida. In pratica non riesco a capire perché l'esempio con una & sola non funge.

    PARTE DELLA DISPENSA:

    codice:
    if ( (document.all) && (navigator.platform.indexOf("Win")>-1) ) {
    alert ("Stai usando Internet Explorer su Windows");
    } else {
    alert ("Stai usando Internet Explorer su Mac");
    }
    /* L'oggetto navigator.platform contiene le indicazioni sul
    sistema operativo che l'utente sta usando. Nel caso di
    Windows: alert(navigator.platform); restituisce "Win32"
    indexOf serve per cercare del testo in una stringa: se
    non lo trova restituisce "-1", ecco perché abbiamo chiesto
    di verificare che il risultato di indexOf sia maggiore
    di -1. In pratica così facendo abbiamo chiesto di verificare
    che navigator.platform contenga "Win".
    */
    Utilizzando l'operatore a livello di bit invece il risultato dello script non è corretto:
    if ( (document.all) & (navigator.platform.indexOf("Win")!=-1) ) {
    alert ("Stai usando Internet Explorer su Windows");
    } else {
    alert ("Stai usando Internet Explorer su Mac");
    }
    Grazie come sempre e grazie per la lettura che mi avete consigliato, sto capendo meglio molte parti...

  2. #2
    leggi dove c'è scritto Nota a margine, facendo & e non && trasformi quello che confronti in BIT ovvero sequenze di 0 e 1, non usi il confronto vero e proprio, ma uno sottoposto all'approssimazione della traformazione in binario
    I DON'T Double Click!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    74
    document.all -> true -> 010110010...
    navigator.platform.indexOf("Win")!=-1 -> true -> 010110010...
    ->
    if ((010110010...) & (010110010...)) => true

    mentre con &&

    if ((true) && (true)) => true

    non riesco a capire cosa cambia ragionare con true oppure ragionare con il conseguente numero binario 010110010...

    scusate ma sono proprio fatto di coccio!

  4. #4
    Nononono document.all NON è true è un oggetto o è undefinied è l'operatore logico && che fa la valutazione (o translazione se preferisci, nel senso che per valutare i seguenti casi trasforma i valori nel seguente modo):

    !undefinied (definito insomma) => true
    !null (non nullo) => true
    >= 1 => true

    undefinied => false
    null => false
    0 => false

    l'operatore binario non fa questa conversione, quindi si trova con il binario dell'oggetto document.all che è, puoi scommetterci) diverso dal binario di true.
    I DON'T Double Click!

  5. #5
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da Moito
    document.all -> true -> 010110010...
    l'ultimo passaggio cos'è?
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  6. #6
    quello è sbagliato indicato così:

    document.all è un oggetto (usato solo in IE, tra l'altro le vecchie versioni) che contiene tutti gli elementi della pagina, aventi per chiave l'id assegnato.

    per esempio, se metti nella pag <div id = "MyDiv"></div>, in document.all["MyDiv"] trovi l'oggetto HTMLDivElement corrispondente.

    in verità la conversione document.all => true viene attuata dall'operatore logico && (anche da || a dire il vero) il quale, dato che necessita un booleano per fare il confronto trasforma quello che c'è nell'espressione secondo la tabella che ho postato prima.
    I DON'T Double Click!

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    74
    ok grazie mille, ora mi é tutto molto più chiaro! grazie di cuore

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