Вопросительный знак в JavaScript
Я наткнулся на следующую строку
hsb.s = max != 0 ? 255 * delta / max : 0;
Что означают ?
и :
в этом контексте?
Ответы
Ответ 1
Он называется Условный оператор (который является тернарным оператором).
Он имеет форму: condition
? value-if-true
: value-if-false
Подумайте о ?
как "then" и :
как "else".
Ваш код эквивалентен
if (max != 0)
hsb.s = 255 * delta / max;
else
hsb.s = 0;
Ответ 2
Правильно заключенная в скобки для ясности, это
hsb.s = (max != 0) ? (255 * delta / max) : 0;
означает возврат
-
255*delta/max
, если max!= 0
-
0
, если max == 0
Ответ 3
hsb.s = max!= 0? 255 * delta/max: 0;
? является тернарным оператором, он работает как a, если в сочетании с:
!= означает, что не равно
Таким образом, длинная форма этой строки будет
if (max != 0) { //if max is not zero
hsb.s = 255 * delta / max;
} else {
hsb.s = 0;
}
Ответ 4
Это, вероятно, немного яснее, если записать с помощью скобок следующим образом:
hsb.s = (max != 0) ? (255 * delta / max) : 0;
Что он делает, это оценить часть в первых скобках. Если результат верен, то часть после? и перед возвратом:. Если оно ложно, то возвращается следующее:.
Ответ 5
? :
- это не тернарный оператор?
var x= expression ? true:false
Ответ 6
Будьте осторожны с этим. A -1 оценивает значение true, хотя -1!= True и -1!= False. Поверьте мне, я видел, как это происходит.
так
-1? "истинная сторона": "ложная сторона"
оценивает "истинную сторону"