2012-06-07 12 views
14

Po prostu chcę, aby sprawdzić, który jest lepszy sposób na warunkowym zmiennej ASSIGNMENTBest Way o warunkowe przypisanie zmiennej

1-te metoda

if (true) { 
    var myVariable = 'True'; 
} else { 
    var myVariable = 'False'; 
} 

2-ty Method

var myVariable = 'False'; 
if (true) { 
    myVariable = 'True'; 
} 

Tak naprawdę wolę drugą bez żadnego konkretnego powodu technicznego. Co wy myślicie?

+0

drugi jest znacznie lepiej –

+0

nie robi pierwsze ograniczenie 'myVariable' do zakresu został przypisany i nie mogą być używane poza' if' albo 'else' został przydzielony w. – Tomaltach

Odpowiedz

0

Ja też wolałbym drugą opcję, bez technicznego powodu, ale ze względu na łatwy do odczytania kod, czytelność jest bardzo ważna w kodzie.

Jeśli widzisz drugą opcję, z punktu widzenia przetwarzania zostanie wykonane tylko jedno sprawdzenie, ale zapisany zostanie bardzo krótki czas przetwarzania, więc w drugim przypadku jest tylko jedno sprawdzenie.

+0

jeden techniczny powód: będzie tylko jedno sprawdzenie warunku w drugim –

+0

tak, poprawię zaktualizuję mój post, aby było jasne – mprabhat

1

Pierwsze rozwiązanie wykorzystuje tylko jedno przydział zamiast 1,5 średnio w drugim fragmencie kodu. Z drugiej strony pierwszy fragment kodu jest mniej czytelny, ponieważ osoby nie znające JavaScriptu mogą nie zdawać sobie sprawy, że zakres zmiennej nie jest zorientowany blokowo na funkcje - w innych językach z C-podobną składnią myVariable nie byłaby dostępna poza if i else bloków.

Innymi słowy oba rozwiązania mają wady. Co o potrójnym operatora:

var myVariable = condition? 'True' : 'False'; 

lub jeśli nie dbają o wielbłądach przypadku (choć rozumiem, jest to tylko przykład, a nie prawdziwy kod);

var myVariable = (!!condition).toString(); 
3

Można zrobić potrójny, który jest dużo krótszy (i nie cerować nawiasach klamrowych):

var myVariable = (true) ? 'True' : 'False'; 
0

To zależy od zastosowania dla mnie. Jeśli mam kod, który chcę uruchomić tylko wtedy, gdy jest prawdziwy, ale bez dodatkowego kodu dla fałszu, użyję drugiego. Jeśli chcę wykonać jakiś kod na true, a inny na false, używam pierwszego. Wszystko zależy od użycia, ale ogólną zasadą dla mnie jest napisanie tylko raz. Utrzymać go w czystości, keep it simple i trzymać go krótko

+0

Czy uważasz, że drugi jest logicznie poprawny? – RaviTeja

51

spróbować tej

var myVariable = (true condition) ? "true" : "false" 
+0

+1. Uwielbiam w ten sposób i sposób, w jaki używam. Ktoś powiedział mi, że nie jest czytelny, ale, do cholery, jest bardzo kompaktowy (i nadal czytelny, imo). – DonCallisto

+1

Czy to coś innego niż pierwszy sposób? Czy to nie to samo z inną składnią? –

+0

@Andy logicznie nie .. ale nadal lepiej .. –

4

Trzeci sposób, kiedy są przechowywane tylko prawda fałsz w variabel następnie użyć

var myVariable =(condition_written_in_if); 
5

Istnieją dwie metody I wiem, że możesz zadeklarować wartość zmiennej według warunków.

Metoda 1: Jeśli warunek zostanie zwrócony do wartości true, wartość z lewej strony kolumny zostanie przypisana do zmiennej. Jeśli warunek zostanie uznany za fałszywy, warunek po prawej stronie zostanie przypisany do zmiennej. Możesz również zagnieździć wiele warunków w jednym komunikacie.

var a = (true)? "true" : "false"; 

zagnieżdżanie przykładem metody 1: Zmień zmiennej wartość 0, 1, 2 i wartość ujemną, aby zobaczyć, jak oświadczenie będzie produkować wynik.

var a = 1; 
var b = a > 0? (a === 1? "A is 1" : "A is not 1") : (a === 0? "A is zero" : "A is negative"); 

Metoda 2: W tej metodzie, jeśli wartość po lewej stronie || jest równe zero, fałsz, null, undefined lub pusty ciąg znaków, wówczas wartość po prawej zostanie przypisana do zmiennej. Jeśli wartość po lewej stronie || nie jest równe zero, fałsz, null undefined lub pusty łańcuch, wówczas wartość po lewej zostanie przypisana do zmiennej.

Mimo że wartość po lewej stronie może być nieokreśloną wartością dla JS w celu oceny warunku, ale zmienna musi zostać zadeklarowana inaczej, zostanie utworzony wyjątek.

var a = 0; 
var b = a || "Another value"; 
Powiązane problemy