2011-11-02 12 views
5

Mam zmienną o javascrit, zainicjowany na 0. Co chciałbym zrobić to w ten sposób:Zmień wartość od 0-> 1 lub 1-> 0 tylko z operacji matematycznych

  • jeżeli wartość wynosi 0, zmień go na 1;
  • jeśli wartość wynosi 1, zmień ją na 0;

i uniknę warunkowego oświadczenia (np./Else), aby sprawdzić, jaka jest wartość.

Myślę, że po prostu robię to z jakąś operacją matematyczną; Myślałem, że do pracy nie, ale nie wiem jak to zrobić, że działanie bez

+0

** Dlaczego ** chcesz uniknąć, jeśli/else? Jakiegokolwiek powodu? –

+0

Nie ma konkretnego powodu. Myślę, że jest jeszcze szybszy sposób na zmianę wartości z 0-> 1 lub 1-> 0, bez sprawdzania i ustawiania wartości ... – markzzz

+0

Przez "szybkie" rozumiesz wykonanie kodu? Jeśli tak, to patrzysz na zły koniec: twoja mikrooptymalizacja i prawdopodobnie robisz to po złej stronie kodu. Upewnij się, że ** mierz ** przed próbą optymalizacji. –

Odpowiedz

3

można użyć operatora XOR:

x = x XOR 1; 
2

Jeśli zmienna jest powiedzmy, że

i = 1 - i, powinno wystarczyć

jeśli i = 0, 1 - 0 = 1 i = 1 niż

jeśli i = 1, 1 - 1 = 0 i = 0 niż

0

Oto kolejny zapis, to także zmienia true, false 1, 0.

x = +x; 

Jeśli chcesz przełączyć wartość

x = +!x; 
0

Krótki XOR składnia:

x ^= 1 

Swapy od 0 do 1 i 1 do 0.