Ciao, solitamente per situazioni del genere si utilizza una variabile booleana (true/false).
Per commutare lo stato della variabile puoi usare l'operatore "!" (NOT booleano), in questo modo:
Cioè, dopo questa operazione, x sarà la negazione di se stessa. Il risultato è sempre un valore booleano.
Tieni presente che x dovrà comunque essere dichiarata precedentemente, altrimenti otterresti un errore.
Ancora, tieni presente che valori come undefined, null, NaN, "" (stringa vuota), 0, in questo caso saranno considerati come il valore false.
Esempi:
codice:
var x; console.log(x); // -> undefined
x=!x; console.log(x); // -> true
x=null; console.log(x); // -> null
x=!x; console.log(x); // -> true
x=10/"pippo"; console.log(x); // -> NaN
x=!x; console.log(x); // -> true
x=""; console.log(x); // -> ""
x=!x; console.log(x); // -> true
x=0; console.log(x); // -> 0
x=!x; console.log(x); // -> true
x=false; console.log(x); // -> false
x=!x; console.log(x); // -> true
Se ti interessa comunque ottenere un valore numerico, puoi usare la funzione Number() o il segno "+" (che in questo caso produce lo stesso effetto):
codice:
// così
x=Number(!x);
// o cosà
x=+!x;