Как написать встроенный оператор IF в JavaScript?

Как я могу использовать встроенный оператор if в JavaScript? Есть ли встроенный оператор else?

Что-то вроде этого:

var a = 2;
var b = 3;

if(a < b) {
    // do something
}
+221
22 апр. '12 в 17:37
источник поделиться
12 ответов

Вам не обязательно нужен 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

+488
22 апр. '12 в 17:40
источник

Связанные вопросы


Похожие вопросы

Существует тернарный оператор, например:

var c = (a < b) ? "a is less than b"  : "a is not less than b";
+37
22 апр. '12 в 17:40
источник

Для написания оператора if inline код внутри него должен быть только одним утверждением:

if ( a < b ) // code to be executed without curly braces;
+33
22 апр. '12 в 17:43
источник

На простом английском языке объясняется синтаксис:

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;
+27
10 мая '13 в 8:24
источник

Вы также можете аппроксимировать 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 были истинными. Вы также можете добиться более упорядоченных сложных условий с помощью логических операторов, которые могут быть довольно беспорядочными с помощью вложенных трехмерных операций... затем, если вы хотите, чтобы ваш код был легко читаемым, на самом деле это не интуитивно.

+26
04 нояб. '13 в 10:02
источник
<div id="ABLAHALAHOO">8008</div>
<div id="WABOOLAWADO">1110</div>

parseInt( $( '#ABLAHALAHOO' ).text()) > parseInt( $( '#WABOOLAWADO ).text()) ? alert( 'Eat potato' ) : alert( 'You starve' );
+17
22 апр. '12 в 17:44
источник

Uhm, если вы имеете в виду в JavaScript, вы можете сделать следующее:

a < b ? /*do something*/ : /*do something else*/;
+14
22 апр. '12 в 17:40
источник

Если вам просто нужен встроенный IF (без ELSE), вы можете использовать логический оператор AND:

(a < b) && /*your code*/;

Если вам также нужна ELSE, используйте тройную операцию, которую предложили другие люди.

+10
14 июл. '15 в 3:51
источник

Мне часто нужно запускать больше кода за условие, используя: ( , , ) можно выполнить несколько элементов кода:

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 ) );
+4
31 авг. '17 в 8:15
источник

FYI, вы можете составить условные операторы

var a = (truthy) ? 1 : (falsy) ? 2 : 3;

Если ваша логика достаточно сложна, вы можете использовать IIFE

var a = (function () {
  if (truthy) return 1;
  else if (falsy) return 2;
  return 3;
})();

Конечно, если вы планируете использовать эту логику более одного раза, то вы должны инкапсулировать ее в функцию, чтобы сохранить что-то хорошее и сухим.

+4
01 авг. '16 в 20:58
источник

Чтобы добавить к этому, вы также можете использовать inline if condition with && и || операторы. Как этот

var a = 2;
var b = 0;

var c = (a > b || b == 0)? "do something" : "do something else";
+3
10 окт. '13 в 6:37
источник

Разве это не вопрос: могу ли я написать следующее?

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)

обязательно оберните двусмысленный код в фигурных скобках, так как выше будет выведено исключение (и аналогичные перестановки будут приводить к нежелательному поведению.)

0
16 июл. '15 в 14:42
источник

Посмотрите другие вопросы по меткам или Задайте вопрос