Czy ktoś może mi wyjaśnić prostymi słowami, czym jest ?:
operator (warunkowy, „trójskładnikowy”) i jak go używać?
?:
(tak jak go napisałeś, bez instrukcji pomiędzy) - operator Elvisa . Całkiem sprytne.
Czy ktoś może mi wyjaśnić prostymi słowami, czym jest ?:
operator (warunkowy, „trójskładnikowy”) i jak go używać?
?:
(tak jak go napisałeś, bez instrukcji pomiędzy) - operator Elvisa . Całkiem sprytne.
Odpowiedzi:
Jest to jednowierszowy skrót dla instrukcji if-else. To się nazywa operator warunkowy. 1
Oto przykład kodu, który można skrócić za pomocą operatora warunkowego:
var userType;
if (userIsYoungerThan18) {
userType = "Minor";
} else {
userType = "Adult";
}
if (userIsYoungerThan21) {
serveDrink("Grape Juice");
} else {
serveDrink("Wine");
}
Można to skrócić w ?:
podobny sposób:
var userType = userIsYoungerThan18 ? "Minor" : "Adult";
serveDrink(userIsYoungerThan21 ? "Grape Juice" : "Wine");
Podobnie jak wszystkie wyrażenia, operator warunkowy może być również używany jako samodzielna instrukcja z efektami ubocznymi, chociaż jest to niezwykłe poza minimalizacją:
userIsYoungerThan21 ? serveGrapeJuice() : serveWine();
Mogą być nawet powiązane:
serveDrink(userIsYoungerThan4 ? 'Milk' : userIsYoungerThan21 ? 'Grape Juice' : 'Wine');
Bądź jednak ostrożny, bo skończysz z zawiłym kodem:
var k = a ? (b ? (c ? d : e) : (d ? e : f)) : f ? (g ? h : i) : j;
1 Często nazywany „operator trójargumentowy”, ale w rzeczywistości jest to tylko operator trójargumentowy [operator przyjmując trzy argumenty]. Jednak obecnie jest to jedyny JavaScript.
ternary
jest typem operatora (tzn. Składa się z 3 części). Nazwa tego konkretnego trójskładnikowego operatora to conditional operator
. Zdarza się, że w JS jest tylko jeden operator trójskładnikowy, więc warunki są niewłaściwie używane.
||
operator, ponieważ powoduje zwarcie, jeśli wartość po lewej jest prawdziwa.
Chcę dodać trochę do podanych odpowiedzi.
Jeśli napotkasz (lub chcesz użyć) trójkę w sytuacji takiej jak „wyświetl zmienną, jeśli jest ustawiona, w przeciwnym razie ...”, możesz ją skrócić, bez trójki .
Zamiast:
var welcomeMessage = 'Hello ' + (username ? username : 'guest');
Możesz użyć:
var welcomeMessage = 'Hello ' + (username || 'guest');
Jest to Javascripts równorzędny z trójskładnikowym operatorem PHP ?:
Lub nawet:
var welcomeMessage = 'Hello ' + (username || something || maybethis || 'guest');
Ocenia zmienną, a jeśli jest fałszywa lub nieuzbrojona, przechodzi do następnej.
'Hello ' + (username ? username : 'guest')
, Hello +
jeśli zostanie zignorowany i zwrócony zostanie wynik operacji potrójnej. Czy ktoś może wyjaśnić, dlaczego?
'Hello ' + username
zawsze true
, ponieważ jest to struna o długości większej niż 0.
Nazywa się to operatorem „trójskładnikowym” lub „warunkowym”.
Przykład
Operator?: Może być używany jako skrót do instrukcji if ... else. Zwykle jest używany jako część większego wyrażenia, w którym instrukcja if ... else byłaby niezręczna. Na przykład:
var now = new Date();
var greeting = "Good" + ((now.getHours() > 17) ? " evening." : " day.");
Przykład tworzy ciąg zawierający „Dobry wieczór”. jeśli jest po 18:00. Odpowiednik kodu przy użyciu instrukcji if ... else wyglądałby następująco:
var now = new Date();
var greeting = "Good";
if (now.getHours() > 17)
greeting += " evening.";
else
greeting += " day.";
Zasadniczo jest to skrót warunkowy.
Zobacz także:
Google jest trochę trudny, gdy wszystko, co masz, to symbole;) Używanymi terminami są „operator warunkowy javascript”.
Jeśli zobaczysz więcej śmiesznych symboli w Javascripcie, powinieneś najpierw poszukać operatorów JavaScript: listy operatorów MDC . Jedynym wyjątkiem, na który możesz się natknąć, jest $
symbol .
Aby odpowiedzieć na twoje pytanie, operatory warunkowe zastępują proste instrukcje if. Przykład jest najlepszy:
var insurancePremium = age > 21 ? 100 : 200;
Zamiast:
var insurancePremium;
if (age > 21) {
insurancePremium = 100;
} else {
insurancePremium = 200;
}
var olderThan20 = age > 20;
tego użyć .
z = (x == y ? 1 : 2);
jest równa
if (x == y)
z = 1;
else
z = 2;
z wyjątkiem, oczywiście, że jest krótszy.
Większość odpowiedzi jest poprawna, ale chcę dodać trochę więcej. Operatora trójskładnikowego jest prawostronne, co oznacza, że może być łańcuch , w następujący sposób if … else-if … else-if … else
:
function example() {
return condition1 ? value1
: condition2 ? value2
: condition3 ? value3
: value4;
}
Równoważny:
function example() {
if (condition1) { return value1; }
else if (condition2) { return value2; }
else if (condition3) { return value3; }
else { return value4; }
}
Więcej szczegółów tutaj
Nazywa się to operatorem trójskładnikowym
tmp = (foo==1 ? true : false);
Operator trójskładnikowy
Zwykle mamy w języku JavaScript instrukcje warunkowe.
Przykład:
if (true) {
console.log(1)
}
else {
console.log(0)
}
# Answer
# 1
ale zawiera dwa lub więcej wierszy i nie można go przypisać do zmiennej. Javascript ma rozwiązanie dla tego Problemowego operatora trójskładnikowego . Operator trójskładnikowy może pisać w jednym wierszu i przypisywać do zmiennej.
Przykład:
var operator = true ? 1 : 0
console.log(operator)
# Answer
# 1
Ten trójskładnikowy operator jest podobny w języku programowania C.
Hej kolego, pamiętaj tylko, że js działa, oceniając na prawdę lub fałsz, prawda?
weźmy trójkowego operatora:
questionAnswered ? "Awesome!" : "damn" ;
Po pierwsze, js sprawdza, czy pytanie Odpowiedź brzmi true
czy false
.
if true
( ?
) dostaniesz „Awesome!”
else ( :
) dostaniesz „cholera”;
Mam nadzieję, że to pomaga przyjacielowi :)
To if statement
wszystko na jednej linii.
Więc
var x=1;
(x == 1) ? y="true" : y="false";
alert(y);
Wyrażenie do oceny znajduje się w ( )
Jeśli jest zgodny z prawdą, wykonaj kod po ?
Jeśli pasuje do fałszu, wykonaj kod po :
x = 9
y = 8
unary
++x
--x
Dwójkowy
z = x + y
Potrójny
2>3 ? true : false;
2<3 ? true : false;
2<3 ? "2 is lesser than 3" : "2 is greater than 3";
To się nazywa ternary operator
. Aby uzyskać więcej informacji, oto inne pytanie, na które odpowiedziałem w tej sprawie:
conditional operator
. Zdarza się, że w JS jest tylko jeden operator trójskładnikowy, więc warunki są niewłaściwie używane.
To prawdopodobnie nie jest najbardziej elegancki sposób na zrobienie tego. Ale dla kogoś, kto nie zna operatorów trójskładnikowych, może się to okazać przydatne. Osobiście wolę robić rezerwy 1-liniowe zamiast bloków warunków.
// var firstName = 'John'; // Undefined
var lastName = 'Doe';
// if lastName or firstName is undefined, false, null or empty => fallback to empty string
lastName = lastName || '';
firstName = firstName || '';
var displayName = '';
// if lastName (or firstName) is undefined, false, null or empty
// displayName equals 'John' OR 'Doe'
// if lastName and firstName are not empty
// a space is inserted between the names
displayName = (!lastName || !firstName) ? firstName + lastName : firstName + ' ' + lastName;
// if display name is undefined, false, null or empty => fallback to 'Unnamed'
displayName = displayName || 'Unnamed';
console.log(displayName);
Możemy użyć Jquery, a także długości, jak poniżej:
Załóżmy, że mamy pole tekstowe „Gwarant”, które ma wartość i chce uzyskać imię i nazwisko - może być puste. Więc rathar niż
var gnamesplit = $("#txtGuarantorName").val().split(" ");
var gLastName = "";
var gFirstName = "";
if(gnamesplit.length > 0 ){
gLastName = gnamesplit[0];
}
if(gnamesplit.length > 1 ){
gFirstName = gnamesplit[1];
}
Możemy użyć poniższego kodu z Jquery z minimalnym kodem
var gnamesplit = $("#txtGuarantorName").val().split(" ");
var gLastName = gnamesplit.length > 0 ? gnamesplit[0] : "";
var gFirstName = gnamesplit.length > 1 ? gnamesplit[1] : "";
$("#txtLastName").val(gLastName);
$("#txtFirstName").val(gFirstName);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div >
Guarantor Name: <input type="text" id="txtGuarantorName" value="ASP.NET Core" /><br/>
<br/>
<br/>
First Name: <input type="text" id="txtLastName" value="ASP.NET Core" />
Last Name: <input type="text" id="txtFirstName" value="ASP.NET Core" />
</div>
Wyrażenia trójskładnikowe są bardzo przydatne w JS, szczególnie React. Oto uproszczona odpowiedź na wiele dobrych, szczegółowych.
condition ? expressionIfTrue : expressionIfFalse
Pomyśl o expressionIfTrue
OG, jeśli oświadczenie jest prawdziwe;
pomyśl o tym, expressionIfFalse
jak o innym zdaniu.
Przykład:
var x = 1;
(x == 1) ? y=x : y=z;
to sprawdzało wartość x, pierwsze y = (wartość) zwracane, jeśli true, drugie zwracane po dwukropku: zwracane y = (wartość), jeśli false.
Operator warunkowy (trójskładnikowy) jest jedynym operatorem JavaScript, który przyjmuje trzy operandy. Ten operator jest często używany jako skrót do instrukcji if.
condition ? expr1 : expr2
Jeśli warunek jest spełniony, operator zwraca wartość wyraż1; w przeciwnym razie zwraca wartość wyraż2.
function fact(n) {
if (n > 1) {
return n * fact(n-1);
} else {
return 1;
}
// we can replace the above code in a single line of code as below
//return (n != 1) ? n * fact(n - 1) : 1;
}
console.log(fact(5));
Aby uzyskać więcej wyjaśnień, przeczytaj link do dokumentu MDN
Jeśli masz jedną funkcję sprawdzania wystąpienia warunku w javascript . jest łatwy w obsłudze operator trójskładnikowy . który będzie wymagał tylko jednej linii do wdrożenia. Dawny:
private module : string ='';
private page:boolean = false;
async mounted(){
if(this.module=== 'Main')
{
this.page = true;}
else{
this.page = false;
}
}
taką funkcję z jednym warunkiem można zapisać w następujący sposób.
this.page = this.module=== 'Main' ?true:false;
stan: schorzenie ? jeśli prawda: jeśli fałsz
(sunday == 'True') ? sun="<span class='label label-success'>S</span>" : sun="<span class='label label-danger'>S</span>";
sun = "<span class='label " + ((sunday === 'True' ? 'label-success' : 'label-danger') + "'>S</span>"
sunday ?
powinno byćsun = "<span class='label " + ((sunday === 'True' ? 'label-success' : 'label-danger') + "'>S</span>"