Как я могу использовать встроенный оператор 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
Существует тернарный оператор, например:
var c = (a < b) ? "a is less than b" : "a is not less than b";
Для написания оператора if
inline код внутри него должен быть только одним утверждением:
if ( a < b ) // code to be executed without curly braces;
На простом английском языке объясняется синтаксис:
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;
Вы также можете аппроксимировать if/else, используя только логические операторы.
(a && b) || c
Вышеприведенное примерно то же самое, что сказать:
a ? b : c
И, конечно, примерно то же самое, что:
if ( a ) { b } else { c }
Я говорю грубо, потому что есть одна разница с этим подходом, поскольку вы должны знать, что значение b
будет оцениваться как истинное, иначе вы всегда получите c
. Баснически вы должны понять, что часть, которая появится if () { here }
, теперь является частью условия, в которое вы помещаете if ( here ) { }
.
Вышеупомянутое возможно из-за поведения JavaScripts передачи/возврата одного из исходных значений, которые сформировали логическое выражение, которое зависит от типа оператора. Некоторые другие языки, такие как PHP, несут фактический результат операции, то есть true или false, что означает, что результат всегда истинным или ложным; например:
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 }
Вы можете спросить, почему использовать Логические операторы вместо Терминальный оператор, для простых случаев вы, вероятно, не будет, если вы не хотите, чтобы a
и b
были истинными. Вы также можете добиться более упорядоченных сложных условий с помощью логических операторов, которые могут быть довольно беспорядочными с помощью вложенных трехмерных операций... затем, если вы хотите, чтобы ваш код был легко читаемым, на самом деле это не интуитивно.
<div id="ABLAHALAHOO">8008</div>
<div id="WABOOLAWADO">1110</div>
parseInt( $( '#ABLAHALAHOO' ).text()) > parseInt( $( '#WABOOLAWADO ).text()) ? alert( 'Eat potato' ) : alert( 'You starve' );
Uhm, если вы имеете в виду в JavaScript, вы можете сделать следующее:
a < b ? /*do something*/ : /*do something else*/;
Если вам просто нужен встроенный IF (без ELSE), вы можете использовать логический оператор AND:
(a < b) && /*your code*/;
Если вам также нужна ELSE, используйте тройную операцию, которую предложили другие люди.
FYI, вы можете составить условные операторы
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 ) );
Чтобы добавить к этому, вы также можете использовать inline if condition with && и || операторы. Как этот
var a = 2;
var b = 0;
var c = (a > b || b == 0)? "do something" : "do something else";
Разве это не вопрос: могу ли я написать следующее?
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)
обязательно оберните двусмысленный код в фигурных скобках, так как выше будет выведено исключение (и аналогичные перестановки будут приводить к нежелательному поведению.)