Вопросительный знак и двоеточие в JavaScript

Одна из более забавных вещей обнаружить: курсив и полужирный текст makrup не работают с символами CJK (Chinese/Japanese/Korean). Они просто становятся нечитабельными. (Хорошо, я не мог действительно считать их прежде также, но особенно выделение полужирным просто создает пятна чернил)

239
задан T.J. Crowder 17 April 2018 в 04:27
поделиться

5 ответов

Он называется условным оператором (который является тернарным оператором ).

Он имеет форму: условие ? значение-если-истина : значение-если-ложь
Думайте о ? как о «то» и : как о «другом».

Ваш код эквивалентен

if (max != 0)
  hsb.s = 255 * delta / max;
else
  hsb.s = 0;
353
ответ дан 23 November 2019 в 03:21
поделиться

Это, вероятно, немного яснее, если записать в скобках следующим образом:

hsb.s = (max != 0) ? (255 * delta / max) : 0;

Он оценивает часть в первых скобках. Если результат верен, то часть после? и до: возвращается. Если это ложь, то возвращается то, что следует за:

7
ответ дан 23 November 2019 в 03:21
поделиться

Правильно заключено в скобки для ясности, это

hsb.s = (max != 0) ? (255 * delta / max) : 0;

означает возврат либо

  • 255 * delta / max if max! = 0
  • 0 if max == 0
37
ответ дан 23 November 2019 в 03:21
поделиться

hsb.s = max! = 0? 255 * дельта / макс: 0;

? является тернарным оператором, он работает как if в сочетании с:

! = означает не равно

Таким образом, длинная форма этой строки будет

if (max != 0) { //if max is not zero
  hsb.s = 255 * delta / max;
} else {
  hsb.s = 0;
}
7
ответ дан 23 November 2019 в 03:21
поделиться

? : разве это не тернарный оператор?

var x = выражение? true: false

1
ответ дан 23 November 2019 в 03:21
поделиться
Другие вопросы по тегам:

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