Tworzę małe narzędzie do kompilowania bloku javascript za pomocą C#. Próbuję zrozumieć przepływ wykonawczy operatora potrójnego. Teraz gdy używam javascript używając Chrome lub Firefoksa:JavaScript potrójny wynik operatora
var k = 27;
var o = 78;
var a = k < 100 ? o+=2 > 11 ? "T" : "F" : o < 100 ? "J" : "P";
alert(a);
Należy mieć dać mi prowadzić "T" lub "F" jeśli "o + = 2" zwraca false. Ale zamiast nich zwraca "78F". Czy ktoś może mi wyjaśnić, jaka jest logika, która za tym stoi.
Polecam NIE gniazdowania operatorów trójskładnikowych. Chociaż zawsze jest miło mieć jedno-liniowy, o wiele łatwiej jest zrozumieć innych programistów, jeśli podzielisz to na instrukcje if-else. Musiałem kiedyś pracować nad aplikacją z maksymalnie 6 zagnieżdżonymi trzema fragmentami.To była bestia do debugowania. – HockeyJ
użyj nawiasów klamrowych '(' i ')', aby rozróżnić wyrażenia i ułatwić wszystkim oczy. Prawdopodobnie da ci to również pożądany rezultat. – Aukhan
Zagnieżdżanie potrójnych jest strasznym pomysłem .. – rlemon