Как я могу использовать встроенный оператор 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';
- person MattW; 07.11.2018
Есть тернарный оператор, например:
var c = (a < b) ? "a is less than b" : "a is not less than b";
0 < 1 : 5 : 120;
- совершенно верное утверждение. Хотя это немного бесполезно, если вам не платят за линию.
- person Ry-♦; 22.04.2012
if
, вероятно, сделает ваш код намного более легким для чтения и понимания и с меньшей вероятностью сломается при последующих изменениях.
- person Emil Lundberg; 10.12.2015
Для написания встроенного оператора if
код внутри него должен быть только одним оператором:
if ( a < b ) // code to be executed without curly braces;
Вы также можете аппроксимировать 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 - это дублировать присвоение:
if ( a ) { d = b } else { d = c }
Вы можете спросить, зачем использовать только логические операторы вместо Ternary Operator, для простых случаев вы, вероятно, не станете, если не хотите сделать конечно, 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
- person JOATMON; 15.05.2017
true
false
и ""
должны быть в порядке, чтобы игнорировать часть else.
- person Onimusha; 16.05.2018
2 == 2 ? doSomething()
будет таким же, как if (2 == 2) doSomething()
?
- person JOATMON; 16.05.2018
: false
или : ""
должны быть там, поскольку javascript ожидает этого.
- person Onimusha; 17.05.2018
Если вам просто нужен встроенный IF (без ELSE), вы можете использовать логический оператор AND:
(a < b) && /*your code*/;
Если вам также нужен ELSE, используйте тернарную операцию, предложенную другими людьми.
Вы можете сделать это в JavaScript:
a < b ? passed() : failed();
К вашему сведению, вы можете составлять условные операторы
var a = (truthy) ? 1 : (falsy) ? 2 : 3;
Если ваша логика достаточно сложна, вы можете рассмотреть возможность использования IIFE
var a = (function () {
if (truthy) return 1;
else if (falsy) return 2;
return 3;
})();
Конечно, если вы планируете использовать эту логику более одного раза, тогда вы должны инкапсулировать ее в функцию, чтобы все было красиво и СУХОЕ.
Мне часто нужно запускать больше кода для каждого условия, используя: ( , , )
несколько элементов кода могут выполнять:
var a = 2;
var b = 3;
var c = 0;
( a < b ? ( alert('hi'), a=3, b=2, c=a*b ) : ( alert('by'), a=4, b=10, c=a/b ) );
Чтобы добавить к этому, вы также можете использовать встроенное условие if с && и || операторы. Нравится
var a = 2;
var b = 0;
var c = (a > b || b == 0)? "do something" : "do something else";
встроенный, если:
(('hypothesis') ? 'truthy conclusion' : 'falsey conclusion')
Правдивый вывод: утверждения выполняются, когда гипотеза верна
ложный вывод: утверждения, выполняемые, когда гипотеза ложна
ваш пример:
var c = ((a < b) ? 'a<b statements' : '!(a<b) statements');
Вопрос не в том, могу ли я написать следующее?
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)
не забудьте заключить неоднозначный код в фигурные скобки, поскольку приведенное выше вызовет исключение (а аналогичные перестановки приведут к нежелательному поведению.)
Упростить тернарный оператор
var locked = 1;
var canChange = locked != 1 ? true : false;
Если заблокировано 1, тогда для переменной canChange
устанавливается значение false
, в противном случае устанавливается значение true. В этом случае вы можете упростить его, используя логическое выражение следующим образом:
var locked = 1;
var canChange = locked != 1;
Для нескольких тернарных операторов JavaScript В следующем примере показано, как использовать два тернарных оператора в одном выражении:
var speed = 90;
var message = speed >= 120 ? 'Too Fast' : (speed >= 80 ? 'Fast' : 'OK');
console.log(message);
Лучше всего использовать тернарный оператор, когда он упрощает чтение кода. Если логика содержит много операторов if ... else, вам не следует использовать тернарные операторы.