Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    cosa significa !!variabile ?

    lo scrivo perchè un utente l'ha chiesto da un'altra parte


    usare !! significa fare un fast-cast booleano

    non(non(qualcosa))

    se qualcosa è 1 o "uno" o {} o [] o una variabile di qualunque tipo diversa da null, undefined, 0 o false ... non qualcosa sarà false e non false sarà true, non un epsressione valutabile come true ma esattamente true



    var qualcosa = {};

    true === !!qualcosa // vera

    se qualcosa è null, false o undefined o 0 , non qualcosa sarà true e non true sarà esattamente false.

    non è indispensabile in JS ma se si vuole fare poi un confronto == true o false che sia è il modo più rapido per castare una variabile.
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  2. #2
    Ciao andr3a,
    non sapevo di questa finezza; quindi vuol dire che invece di
    codice:
    var check = 3;
    if (check) { ... }
    sarebbe più corretto da un punto di vista formale l'espressione

    codice:
    var check = 3;
    if (!!check) { ... }
    ?
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  3. #3
    significa che in certi casi può tornare utile ... quello che hai scritto non è sbagliato ... ma visto che 3 è già un'espressione considerata vera è forse superfluo.

    Alcuni esempi
    codice:
    var	fakefalse = "";
    alert(!!fakefalse === false);	// true, evita il controllo sulla length di stringa
    
    fakefalse = "0";
    alert(!!fakefalse === false);	// false ... la stringa non è vuota
    
    fakefalse = 0;
    alert(!!fakefalse === false);	// true, zero castato è true ricastato è false
    
    fakefalse = 1;
    alert(!!fakefalse === false);	// false ... 1 castato a booleano è false, ricastato è true
    
    fakefalse = [];
    alert(!!fakefalse === false);	// false ... 1 oggetto array castato è false anche se vuoto
    				// ricastato è quindi true
    				
    fakefalse = {};
    alert(!!fakefalse === false);	// false ... oggetto, come l'array
    
    
    fakefalse = null;
    alert(!!fakefalse === false);	// true
    
    var	faketrue;
    alert(!!faketrue === false);	// true, faketrue è undefined
    
    
    function test(a){
    	if(!!a)
    		alert("faccio qualcosa");
    };
    
    test();			// non accade niente
    test("");		// non accade niente
    test("fai qualcosa");	// avviso faccio qualcosa
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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