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



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



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



var a = 2;
var b = 3;

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

12 ответов:

вам не обязательно нужен jQuery. Только JavaScript сделает это.

var a = 2;
var b = 3;    
var c = ((a < b) ? 'minor' : 'major');

The 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 будет оценивать как true, иначе вы всегда получите c. В основном вы должны понимать, что часть, которая появится if () { here } is теперь часть условия, которое вы размещаете 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 {}

одно главное преимущество, сравненное с нормальным если заявление, то что первые два метода могут работать на правой стороне аргумента, т. е. как часть присваивания.

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*/;

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

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

чтобы добавить к этому, вы также можете использовать встроенное условие if с операторами && и||. Вот так

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)

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

Comments

    Ничего не найдено.