2014-01-13 6 views
0

Я совершенно новичок в программировании. У меня есть книга для программистов на Рождество, и с тех пор я слежу за книгой JavaScript.Как использовать условный оператор

Я не понимаю, как работает тернарный (условный) оператор. в следующем примере я знаю, что если x больше 0, он запускает код, но что делает x: -x do?

      x > 0 ? x : -x 
+0

Нет, он запускает код независимо от того, какое условие выполняется, он просто запускает другой код. 'if x> 0', тогда запустите' x'. В противном случае запустите '-x' –

+0

Это не« правдивый и фальсифицированный оператор », а« [условный оператор] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator)». – h2ooooooo

+0

Возможный дубликат [Что означает этот символ в JavaScript?] (Http: // stackoverflow.com/questions/9549780/what-do-this-symbol-mean-in-javascript) – Quentin

ответ

0

Это трехкомпонентный оператору

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

в случае:

y = x > 0 ? x: -x 

вы должны прочитать эту Y равные х, если х> 0 еще у равно -x

1

Это более короткий способ записи следующий код:

if(x > 0) 
    { 
     //then x 
    } 
    else 
    { 
     //then -x 
    } 

Этот синтаксис очень полезен, например

var myvar = (x > 0) ? x : -x; 
1

Вы смотрите на conditional operator. Это тернарный оператор (оператор, который принимает 3 операнда), несколько схожий по функции с оператором if.

var y = (x > 0) ? x : -x // parenthesis for extra clarity 

почти эквивалентен следующему:

var y; 
    if (x>0) { 
    y = x; 
    } else { 
    y = -x; 
    } 

Перевод простого текста, что если значение до? оценивает значение true, выражение оценивает значение до :, в противном случае оно оценивается после :.

Условный оператор не обязательно должен использоваться только в назначениях. Эта часть кода делает ту или иную вещь, если x больше 0 или нет.

x > 0 ? doOneThing(x) : doAnotherThing(x); 

Однако из-за перекрытия функциональных возможностей с утверждением, если (описано выше), в случаях, подобных этому, он часто избегают, потому что это не так очевидно. В присваиваниях, как и в первом примере, он более ясен и более краток. Если бы было некоторое повторение кода (y =), и обе ветви должны быть проверены, прежде чем идентифицировать это, если просто присваивает значение y. С условным оператором этот факт сразу становится очевидным.

0

? называется оператором ternary и является единственным оператором, имеющим три операнда (три части к нему). Утверждение читается как оператор if else. Бит перед вопросительным знаком - это оператор if.

var y = x > 0 ? x : -x; 

Может также выглядеть;

if(x > 0) { 
    var y = x; 
} else { 
    var y = -x; 
} 

Здесь разбит

x > 0 ? 

перед знаком вопроса является условием быть выполнены (или if заявление)

? x : 

бит после знака вопроса, но перед тем, двоеточие - это код для запуска/назначения, если условие оценивается по правде.

: -x 

ПЖФ после двоеточия код для запуска/назначения, если условие имеет значение falsy

+0

HI, спасибо вам за помощь. Можете ли вы также помочь мне со следующим кодом – user3189609

+0

Как вызвать эту функцию eval ("function f() {return x + 1;}"); – user3189609

0

Truthy: Что-то, которое приводится в TRUE. Falsey: То, что оценивается как ЛОЖЬ.

Есть только пять falsey значения в JavaScript:

undefined, null, NaN, 0, "" (empty string), and false 

Все, кроме выше truthy.

Оператор вы используете ternary operator, которые ведут себя как:

condition ? execute this expression if true : execute this expression if false 

DEMO

var x = 5; 
x > 0 ? x : -x # 5 

var x = -1; 
x > 0 ? x : -x # 1 (positive of -1 as a result of minus operator in -x) 
0

Я могу объяснить это, как я себе:

x > 0 ? x : -x 

Если х > 0, тогда значение должно быть x, в противном случае значение должно быть -x ,

Так что в основном это краткая форма использования if и else. как:

string name=firstname!=null?firstname+" ":string.Empty 
0

Чтобы ответить на ваш вопрос -x, часть будет возвращать отрицательное значение х, если х меньше 0. Если х терка чем 0 он возвращает значение (х), иначе это будет вернуть отрицательное значение (-x).

троичной Оператор

x > 0 ? x: -x 

состояние? инструкция для выполнения, если условие истинно: инструкция выполнить, если условие ложно

Смежные вопросы