[javascript] 당신은 어떻게 사용합니까? : JavaScript의 (조건부) 연산자?

누군가 ?:(조건부, “삼항”) 연산자 란 무엇이며 사용법 은 간단한 단어로 설명해 주 시겠습니까?



답변

이것은 if-else 문의 한 줄 축약입니다. 이를 조건부 연산자라고합니다. 1

조건부 연산자로 단축 할 수있는 코드의 예는 다음과 같습니다.

var userType;
if (userIsYoungerThan18) {
  userType = "Minor";
} else {
  userType = "Adult";
}

if (userIsYoungerThan21) {
  serveDrink("Grape Juice");
} else {
  serveDrink("Wine");
}

다음과 ?:같이 단축 할 수 있습니다 :

var userType = userIsYoungerThan18 ? "Minor" : "Adult";

serveDrink(userIsYoungerThan21 ? "Grape Juice" : "Wine");

이 비록 모든 표현처럼, 조건 연산자는 또한, 부작용을 가진 독립 문으로 사용할 수있는 특이한 축소를 외부가 :

userIsYoungerThan21 ? serveGrapeJuice() : serveWine();

그들은 연결될 수도 있습니다 :

serveDrink(userIsYoungerThan4 ? 'Milk' : userIsYoungerThan21 ? 'Grape Juice' : 'Wine');

그러나 조심하십시오. 그렇지 않으면 다음과 같이 복잡한 코드가 생깁니다.

var k = a ? (b ? (c ? d : e) : (d ? e : f)) : f ? (g ? h : i) : j;

1 종종 “삼항 연산자”라고하지만 실제로 삼항 연산자 (세 개의 피연산자를 허용하는 연산자) 일뿐 입니다. 그래도 현재 유일하게 JavaScript가 있습니다.


답변

주어진 답변에 일부 를 추가 하고 싶습니다 .

‘변수가 설정된 경우 변수 표시 …’와 같은 상황에서 삼항을 만나거나 사용하려는 경우 삼항없이 더 짧게 만들 수 있습니다 .


대신에:

var welcomeMessage  = 'Hello ' + (username ? username : 'guest');

당신이 사용할 수있는:

var welcomeMessage  = 'Hello ' + (username || 'guest');

이것은 PHP의 속기 삼항 연산자와 동등한 Javascript입니다. ?:

또는:

var welcomeMessage  = 'Hello ' + (username || something || maybethis || 'guest');

변수를 평가하고, 거짓이거나 설정되지 않은 경우 다음으로 넘어갑니다.


답변

이를 ‘삼항’또는 ‘조건부’연산자라고합니다.

? : 연산자는 if … else 문의 바로 가기로 사용할 수 있습니다. 일반적으로 if … else 문이 어색한 큰 식의 일부로 사용됩니다. 예를 들면 다음과 같습니다.

var now = new Date();
var greeting = "Good" + ((now.getHours() > 17) ? " evening." : " day.");

이 예에서는 “Good night”을 포함하는 문자열을 만듭니다. 오후 6시 이후 인 경우 if … else 문을 사용하는 동등한 코드는 다음과 같습니다.

var now = new Date();
var greeting = "Good";
if (now.getHours() > 17)
   greeting += " evening.";
else
   greeting += " day.";

에서 MSDN JS 문서 .

기본적으로 이것은 속기 조건문입니다.

참조 :


답변

당신이 가진 모든 것이 기호 일 때 구글에 조금 어렵습니다;) 사용하는 용어는 “자바 스크립트 조건부 연산자”입니다.

Javascript에 더 재미있는 기호가 표시되면 먼저 Javascript 연산자 ( MDC의 연산자 목록)를 찾아보십시오 . 발생할 가능성이있는 예외는 $심볼 입니다.

질문에 대답하기 위해 조건부 연산자 는 간단한 if 문을 대체합니다. 예가 가장 좋습니다 :

var insurancePremium = age > 21 ? 100 : 200;

대신에:

var insurancePremium;

if (age > 21) {
    insurancePremium = 100;
} else {
    insurancePremium = 200;
}


답변

z = (x == y ? 1 : 2);

에 해당

if (x == y)
    z = 1;
else
    z = 2;

물론 더 짧습니다.


답변

대부분의 답변은 정확하지만 조금 더 추가하고 싶습니다. 삼원 오퍼레이터 가 될 수 오른쪽 연관 인 체인 의 다음 방법 if … else-if … else-if … else:

function example() {
    return condition1 ? value1
         : condition2 ? value2
         : condition3 ? value3
         : value4;
}

다음과 같습니다.

function example() {
    if (condition1) { return value1; }
    else if (condition2) { return value2; }
    else if (condition3) { return value3; }
    else { return value4; }
}

자세한 내용은 여기


답변

삼항 연산자라고합니다

tmp = (foo==1 ? true : false);