Jak korzystać z?: (warunkowy) operator w JavaScript?
Czy ktoś mógłby mi wyjaśnić prostymi słowami czym jest ?:
(warunkowy, "trójkowy") operator i jak go używać?
15 answers
Jest to jednolinijkowy skrót dla instrukcji if-else. Nazywa się operatorem warunkowym.1
Oto przykład kodu, który można skrócić za pomocą operatora warunkowego:
if(userIsYoungerThan21) {
serveGrapeJuice();
}
else {
serveWine();
}
Można to skrócić za pomocą ?:
Tak:
userIsYoungerThan21 ? serveGrapeJuice() : serveWine();
W Javascript operator warunkowy może oceniać wyrażenie, a nie tylko instrukcję:
var userType = userIsYoungerThan18 ? "Minor" : "Adult";
serveDrink(userIsYoungerThan21 ? "Grape Juice" : "Wine");
Mogą być nawet przykute:
userIsYoungerThan4 ? serveMilk() : userIsYoungerThan21 ? serveGrapeJuice() : serveWine();
Bądź ostrożny, albo skończysz z zawiłym kodem tak:
var k = a ? (b ? (c ? d : e) : (d ? e : f)) : f ? (g ? h : i) : j;
1często nazywany "operatorem trójdzielnym", ale w rzeczywistości jest to po prostu A operator trójdzielny [operator przyjmujący trzy operandy]. Jest to jednak jedyny, który obecnie ma JavaScript.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-15 18:29:30
Chcę Dodać kilka do podanych odpowiedzi.
W przypadku, gdy napotkasz (lub chcesz użyć) trójnik w sytuacji takiej jak 'display a variable if it' s set, else...', można go jeszcze skrócić, bez trójnika.
Zamiast:
var welcomeMessage = 'Hello ' + (username ? username : 'guest');
Możesz użyć:
var welcomeMessage = 'Hello ' + (username || 'guest');
jest to Javascripts odpowiednik krótkiego operatora trójwymiarowego PHP?:
Lub nawet:
var welcomeMessage = 'Hello ' + (username || something || maybethis || 'guest');
Ocenia zmienną, a jeśli jest false lub unset, to przechodzi do następnego.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-30 13:15:27
Nazywa się operatorem 'ternary' lub 'conditional'.
Przykład
The ?: operator może być używany jako skrót od if...else oświadczenie. Jest zwykle używany jako część większe wyrażenie, gdzie if...else oświadczenie byłoby niezręczne. Na przykład:
var now = new Date();
var greeting = "Good" + ((now.getHours() > 17) ? " evening." : " day.");
Przykład tworzy ciąg znaków zawierający "Dobry wieczór."jeśli jest po 18: 00. Odpowiedni kod przy użyciu an if...inaczej oświadczenie wyglądałoby jak "follows": {]}
var now = new Date();
var greeting = "Good";
if (now.getHours() > 17)
greeting += " evening.";
else
greeting += " day.";
Zasadniczo jest to skrócona instrukcja warunkowa.
Zobacz też:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:32
To trochę trudne do wygooglowania, gdy wszystko, co masz są symbole ;) Warunki korzystania są "javascript warunkowy operator".
Jeśli widzisz więcej zabawnych symboli w Javascript, spróbuj najpierw wyszukać operatory Javascript: lista operatorów MDC . Jedynym wyjątkiem, z którym możesz się spotkać, jest $
symbol .
Aby odpowiedzieć na twoje pytanie, operatory warunkowe zastępują proste polecenia if. Przykład jest najlepszy:
var insurancePremium = age > 21 ? 100 : 200;
Zamiast of:
var insurancePremium;
if (age > 21) {
insurancePremium = 100;
} else {
insurancePremium = 200;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:56
z = (x == y ? 1 : 2);
Jest równoważne
if (x == y)
z = 1;
else
z = 2;
Poza tym, że jest krótszy.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-07 02:13:36
Operator Trójdzielny
Często mamy wyrażenia warunkowe w Javascript.
przykład:
if (true) {
console.log(1)
}
else {
console.log(0)
}
# Answer
# 1
Ale zawiera dwie lub więcej linii i nie może przypisać zmiennej. Javascript ma rozwiązanie tego problemu Operator trójkowy . Operator trójkowy może zapisywać w jednej linii i przypisywać do zmiennej.
przykład:
var operator = true ? 1 : 0
console.log(operator)
# Answer
# 1
Ten operator trójdzielny jest podobny w języku programowania C.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-21 15:59:52
Nazywa się operatorem trójdzielnym
tmp = (foo==1 ? true : false);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-07 02:13:58
Hej kolego pamiętaj tylko, że js działa oceniając na true lub false, prawda?
Weźmy operator trójkowy:
questionAnswered ? "Awesome!" : "damn" ;
Po pierwsze, js sprawdza, czy pytanie jest true
Czy false
.
Jeśli true
( ?
) dostaniesz " niesamowite!"
Else (:
) dostaniesz "damn";
Mam nadzieję, że to pomoże przyjacielowi:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-24 11:11:34
To if statement
Wszystko w jednej linii.
Więc
var x=1;
(x == 1) ? y="true" : y="false";
alert(y);
Wyrażenie do oceny znajduje się w ( )
Jeśli pasuje do true, wykonaj kod po ?
Jeśli pasuje do false, wykonaj kod po :
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-07 02:18:01
Nazywa się ternary operator
. Aby uzyskać więcej informacji, oto kolejne pytanie, na które odpowiedziałem:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:53
x = 9
y = 8
Unary
++x
--x
Binarny
z = x + y
Ternary
2>3 ? true : false;
2<3 ? true : false;
2<3 ? "2 is lesser than 3" : "2 is greater than 3";
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-10 16:04:24
Operator warunkowy (ternary) jest jedynym operatorem JavaScript to wymaga trzech operandów. Operator ten jest często używany jako skrót do instrukcji if.
condition ? expr1 : expr2
Jeśli warunek jest true, operator zwraca wartość expr1; w przeciwnym razie zwraca wartość expr2.
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-28 11:54:06
Możemy użyć operatora trójdzielnego, jak poniżej, gdzie można wykonać mniej kodowania:
var FullName = "Asp.net Core";
var FirstName = FullName.split(" ")[0]; //give the first index array value :"Asp.net"
var LastName = FullName.split(" ")[1]; //give the second index array value :"Core"
var splitLength = FullName.split(" ").length; //give length of array : 2
Również możemy używać z Jquery jak również długość jak Poniższy przykład:
//Suppose we have GuarantorName textbox which have value and want to split with space
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>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-25 10:58:07
To prawdopodobnie nie jest najbardziej elegancki sposób, aby to zrobić. Ale dla kogoś, kto nie jest zaznajomiony z operatorów trójkowych, może to okazać się przydatne. Moje osobiste preferencje to robić 1-liner fallbacks zamiast condition-blocks.
// 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);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-02 10:41:08
(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>"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-08 07:35:54