Як я можу використовувати вбудований if
оператор у JavaScript? Чи є вбудована else
заява?
Щось на зразок цього:
var a = 2;
var b = 3;
if(a < b) {
// do something
}
Як я можу використовувати вбудований if
оператор у JavaScript? Чи є вбудована else
заява?
Щось на зразок цього:
var a = 2;
var b = 3;
if(a < b) {
// do something
}
Відповіді:
Вам не обов'язково потрібен jQuery. Сам JavaScript зробить це.
var a = 2;
var b = 3;
var c = ((a < b) ? 'minor' : 'major');
c
Мінлива буде , minor
якщо значення true
, і major
якщо значення false
.
Це відомо як Умовний (потрійний) Оператор.
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator
if (a < b) c = 'major';
Для написання if
оператора inline, код всередині нього повинен бути лише одним твердженням:
if ( a < b ) // code to be executed without curly braces;
Є потрійний оператор, такий:
var c = (a < b) ? "a is less than b" : "a is not less than b";
0 < 1 : 5 : 120;
це цілком коректне твердження. Трохи марно, якщо вам не платять за лінію.
if
висловлювання в такому випадку, ймовірно, полегшить ваш код набагато простішим для читання та розуміння, і меншою ймовірністю порушиться з пізнішими змінами.
Ви також можете наблизити if / else, використовуючи лише Логічні Оператори.
(a && b) || c
Сказане приблизно те саме, що сказати:
a ? b : c
І звичайно, приблизно те саме, що:
if ( a ) { b } else { c }
Я кажу приблизно тому, що є одна різниця в цьому підході, в тому, що ви повинні знати, що значення b
оцінюється як істинне, інакше ви завжди отримаєте c
. В основному ви повинні усвідомити, що частина, яка з'явиться if () { here }
, тепер є частиною умови, яку ви ставите if ( here ) { }
.
Вищезазначене можливо завдяки поведінці JavaScripts при передачі / поверненні одного з вихідних значень, що формують логічний вираз, який залежить від типу оператора. Деякі інші мови, наприклад PHP, несуть фактичний результат операції, тобто істинний чи хибний, тобто результат завжди істинний або хибний; наприклад:
14 && 0 /// results as 0, not false
14 || 0 /// results as 14, not true
1 && 2 && 3 && 4 /// results as 4, not true
true && '' /// results as ''
{} || '0' /// results as {}
Однією з головних переваг, порівняно із звичайною операцією if, є те, що перші два способи можуть діяти на правій частині аргументу, тобто як частина завдання.
d = (a && b) || c;
d = a ? b : c;
if `a == true` then `d = b` else `d = c`
Єдиний спосіб досягти цього за допомогою стандарту, якщо заявою буде дублювати призначення:
if ( a ) { d = b } else { d = c }
Ви можете запитати, чому використовувати лише логічних операторів замість термінального оператора , для простих випадків ви, мабуть, цього не зробили, якщо тільки ви не хотіли переконатися, a
і вони b
були правдивими. Ви також можете домогтися більш спрощених складних умов з логічними операторами, які можуть стати досить безладним за допомогою вкладених потрійних операцій ... потім знову, якщо ви хочете, щоб ваш код був легко читабельним, і насправді це не інтуїтивно зрозуміло.
Простий англійською мовою синтаксис пояснив:
if(condition){
do_something_if_condition_is_met;
}
else{
do_something_else_if_condition_is_not_met;
}
Можна записати так:
condition ? do_something_if_condition_is_met : do_something_else_if_condition_is_not_met;
condition ? true
true
false
і ""
все має бути добре, щоб ігнорувати іншу частину.
2 == 2 ? doSomething()
би було те саме, що if (2 == 2) doSomething()
?
: false
або : ""
має бути там, оскільки javascript цього очікує.
FYI, ви можете складати умовні оператори
var a = (truthy) ? 1 : (falsy) ? 2 : 3;
Якщо ваша логіка є досить складною, ви можете розглянути можливість використання IIFE
var a = (function () {
if (truthy) return 1;
else if (falsy) return 2;
return 3;
})();
Звичайно, якщо ви плануєте використовувати цю логіку не один раз, тоді ви повинні зафіксувати її у функції, щоб зберегти приємні та сухі речі.
Це не по суті питання: чи можу я написати наступне?
if (foo)
console.log(bar)
else
console.log(foo + bar)
відповідь - так, вище буде перекладено.
однак, будьте обережні, виконайте наступне
if (foo)
if (bar)
console.log(foo)
else
console.log(bar)
else
console.log(foobar)
не забудьте зафіксувати неоднозначний код у дужках, оскільки вищезазначене призведе до виключення (і подібні перестановки спричинять небажану поведінку.)