Newsgroup: it.comp.lang.javascript
Titolo: un aiuto sugli operatori booleani, vi prego!!!

C'e' qualcuno cosi' cortese da indicarmi un url in italiano dove possa
studiare un po' gli operatori booleani? mi ci sono messo con tutta la buona
volonta', ma se non capisco bene questi, mi sa che non vado avanti... e' un
esaurimento vero e proprio... cioe' in teoria ho capito benissimo, ma poi
studiando i vari script mi ci perdo...
per es, questa funzione:
function makeMenu(obj,nest,show,move,speed){
    nest=(!nest) ? "":'document.'+nest+'.'
this.el=bw.dom?document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?
eval(nest+'document.'+obj):0;
this.css=bw.dom?document.getElementById(obj).style:bw.ie4?document.all[obj].
style:bw.ns4?eval(nest+'document.'+obj):0;
 this.x=this.css.left||this.css.pixelLeft||this.el.offsetLeft||0
 this.y=this.css.top||this.css.pixelTop||this.el.offsetTop||0
 this.state=1; this.go=0; this.mup=b_mup; this.show=show;
this.mdown=b_mdown;
 this.height=bw.ns4?this.css.document.height:this.el.offsetHeight
 this.moveIt=b_moveIt; this.move=move; this.speed=speed
    this.obj = obj + "Object";  eval(this.obj + "=this")
}
bene, definisce la funzione makeMenu con i parametri;
poi definisce la variaible nest e ... fa un logical NOT su se stesso? cioe'
che vuol dire? leggendo il reference.pdf mi dice: "! expr (Logical NOT) ->
Returns false if its single operand can be converted to true; otherwise,
returns true."
scusatemi se dico stupidaggini, ma come faccio a fare un operazione su
qualcosa che sto ancora definendo?
cmq, otterro' o vero o falso, dopodiche' ho un IF statement (operatore ?)
per cui se ho ottenuto vero il valore di nest sara' "", altrimenti sara'
'document.'+nest+'.' ???? lo so, non ci ho capito niente, c'e' qualcuno di
buona volonta che mi da' una mano...

 che vuol dire?
Vuol dire soltanto che:
    if (nest == 0)
        nest = "";
     else
        nest = 'document.' + nest + '.'
un'espressione booleana può assumere solo due valori: false, a cui viene
associato il valore numerico 0, e true,  equivalente al numero 1 (o diverso
da zero). Per cui, l'espressione:
    if (var != 0)
riporta "true" (oppure 1) se  var è diverso da 0, e può essere sintetizzata
in:
    if (var)
Infatti non è necessario fare l'operazione booleana, perché var contiene già
il risultato di essa: se var è 0, (var) viene considerato false, al
contrario, (var) viene considerato true.
Al contrario, per sintetizzare l'espressione:
     if (var == 0)
si può usare l'operatore NOT; per cui diventa:
    if (!var)
Maurizio.

    nest=(!nest) ? "":'document.'+nest+'.'
Ocio, figliuolo, guarda tutta la riga:
nest=(!nest) ? "":'document.'+nest+'.'
non e' una IF.
e' una istruzione condizionale.
l'operatore condizionale e' il punto interrogativo, l'operatore analizza
l'espressione alla sua sinistra e se il suo risultato corrisponde a "vero"
ritorna il valore (o il risultato di una espressione) posta a sinistra dei
due punti : valtrimenti ritorna il valore di destra.
Una cosa piu' semplice:
strProva = "zio"
alert((strProva="zio")?"ciao zio":"Chi sei? Che vuoi? Chi ti conosce?")
Poi riprova mettendo zia al posto di zio nella prima riga.
Nel caso della cosa che hai incontrato tu la cosa si traduce con:
Se e' vero che nest e' falso allora restituisci una stringa vuota,
altrimenti restituisci l'altro valore.
Ciau
Nettuno

Grazie per l'aiuto che mi avete dato, ci sto studiando anche se devo
ammettere che mi risulta tutto molto difficile, soprattutto con el
abbreviazioni... cmq... non manchero' di disturbarvi in futuro... :D
Grazie ancora!

 e' una istruzione condizionale.
Scusa se cavillo: if non è l'Istruzione Condizionale per definizione?
Personalmene preferisco pensare a ?: come ad un if(){}else{}
Quanto al "nest" in questione (per Demetrio), da quel che abbiamo visto 
di codice non possiamo sapere se la variabile sia stata già valorizzata 
da qualche altra parte.
-- 
Ciao, Riccardo
------------------------------------------------------------------------
WebMaster: ----> 
http://www.jsdir.com
 <---- (aka 
http://www.jspoint.it
)
              All the JavaScript you need
------------------------------------------------------------------------
               Nessun traguardo è abbastanza lontano.
------------------------------------------------------------------------