Я наткнулся на следующую строку
hsb.s = max != 0 ? 255 * delta / max : 0;
Что значит ?
и :
что в этом контексте?
javascript
syntax
operators
conditional-operator
Inaimathi
источник
источник
Infinity
(вызванной делением на ноль).Ответы:
Он называется условным оператором (который является троичным оператором ).
Она имеет вид:
condition
?value-if-true
:value-if-false
Подумайте о
?
качестве «тогда» и:
как «другие».Ваш код эквивалентен
источник
addition
Правильно заключенные в скобки для ясности, это
означает возвращение либо
255*delta/max
если max! = 00
если max == 0источник
Это, вероятно, немного понятнее, когда в скобках написано следующее:
Что он делает, так это оценивает часть в первых скобках. Если результат верен, то часть после? и до: возвращается. Если оно ложно, то возвращается то, что следует за:
источник
?
является троичным оператором. Это работает какif
в сочетании с:
!=
значит не равноТаким образом, длинная форма этой линии будет
источник
? :
разве это не троичный оператор?var x= expression ? true:false
источник
?: это сокращенное условие
else {}
иif(){}
проблемы. Итак, ваш код взаимозаменяем с этим:MDN - условный (троичный) оператор
источник
Будьте осторожны с этим. -1 оценивается как true, хотя -1! = True и -1! = False. Поверь мне, я видел, как это случилось.
так
-1? «истинная сторона»: «ложная сторона»
оценивает "истинную сторону"
источник