[javascript] JavaScript의 물음표 및 콜론

나는 다음 라인을 가로 질러왔다

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

무엇을 ?하고 :이러한 맥락에서 의미를?



답변

이를 조건부 연산자 ( 삼항 연산자 )라고합니다.

형식은 다음과 같습니다. condition? value-if-true: “then”및 “else”로 value-if-false
생각하십시오 .?:

귀하의 코드는

if (max != 0)
  hsb.s = 255 * delta / max;
else
  hsb.s = 0;


답변

명확성을 위해 적절하게 괄호로 묶었습니다.

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

의미 중 하나를 반환

  • 255*delta/max 최대 인 경우 = 0
  • 0 최대 == 0 인 경우

답변

다음과 같이 대괄호로 쓸 때 약간 더 명확합니다.

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

그것이하는 일은 첫 번째 괄호 안의 부분을 평가하는 것입니다. 결과가 참이면? 뒤에 나오는 부분 그리고 :가 반환되기 전에. False이면 다음에 나오는 것이 반환됩니다.


답변

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

?삼항 연산자입니다. if그것은와 함께 작동 합니다:

!= 같지 않다는 의미

따라서이 줄의 긴 형식은

if (max != 0) { //if max is not zero
  hsb.s = 255 * delta / max;
} else {
  hsb.s = 0;
}


답변

? : 이것은 삼항 연산자가 아닌가?

var x= expression ? true:false


답변

? : 속기 else {}if(){}문제입니다. 따라서 코드는 다음과 호환됩니다.

if(max != 0){
       hsb.s = 225 * delta / max
}
else {
       hsb.s = 0
}

MDN-조건부 (Ternary) 연산자


답변

이것을 조심하십시오. -1! = true 및 -1! = false이지만 -1은 true로 평가됩니다. 날 믿어, 나는 그것이 일어난 것을 보았다.

그래서

-1 ? “진정한 측”: “거짓 측”

“진정한”평가