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

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

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

var a = 2;
var b = 3;

if(a < b) {
    // do something
}

Ответ 1

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

Ответ 2

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

var c = (a < b) ? "a is less than b"  : "a is not less than b";

Ответ 3

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

if ( a < b ) // code to be executed without curly braces;

Ответ 4

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

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;

Ответ 5

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

Ответ 6

<div id="ABLAHALAHOO">8008</div>
<div id="WABOOLAWADO">1110</div>

parseInt( $( '#ABLAHALAHOO' ).text()) > parseInt( $( '#WABOOLAWADO ).text()) ? alert( 'Eat potato' ) : alert( 'You starve' );

Ответ 7

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

a < b ? /*do something*/ : /*do something else*/;

Ответ 8

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

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

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

Ответ 9

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

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

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

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

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

Ответ 10

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

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 ) );

Ответ 11

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

var a = 2;
var b = 0;

var c = (a > b || b == 0)? "do something" : "do something else";

Ответ 12

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

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)

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