개발자에 따라 다양한 이름으로 불리기도 하는데 사용법이 간단해서 if문을 사용하기 번거로운 경우에 자주 사용하곤 합니다.  

그러다 보니 많은 언어에서 사용 되고 있는데 조건이 복잡해지면 그냥 if문을 사용하는게 좋을 때도 있는데 if문을 사용할 수 없는 상황에서는 직관적이지 않은 경우도 발생 합니다.

 

 

기본적인 삼항 연산자 표현은 다음과 같습니다.

조건식 ? 반환값1 : 반환값2

조건식이 참이면 반환값1을 조건식이 거짓이면 반환값2를 넘겨주는 단순한 연산자 입니다.

 

예제를 하나 만들어 보는게 제일 이해하기 쉽죠.

var nAA = 1;
var nBB = 2;
 
var nZZ = (nAA > nBB) ? 10 : 20;
 
console.log(nZZ);
console.log((nAA > nBB) ? 10 : 20);
결과 20

 

그러나 조금 더 복잡하게 삼항 연산자가 중복되게 작업을 해야 하는 경우도 있습니다. 

var nAA = 1;
var nBB = 2;
var nCC = 3;
 
var nFF = (nAA != nBB) ? nCC < 5 ? 6 : 7 : 4;
 
console.log(nFF);
console.log((nAA != nBB) ? nCC < 5 ? 6 : 7 : 4);
결과 : 6

예제는 간단하게 표시했지만 실제 사용할때는 조건과 반환값이 길어져서 눈동자를 왔다갔다 하게 만드는데 이런 경우에는 보기가 쉽지 않으니 괄호를 이용해 조금 단순하게 표시해 주면 이해하기 편합니다.

 

var nFF = (nAA != nBB) ? (nCC < 5 ? 6 : 7) : 4;

 

이렇게 하면 첫번째 예문과 동일한 구조이고 내부에 하나가 추가된것을 확인할 수 있습니다.

추가된 조건문이 복잡해지는 경우에도

var nAA = 1;
var nBB = 2;
var nCC = 3;
 
var nFF = (nAA != nBB) ? nCC < 5 && nBB == 3 ? 6 : 7 : 4;
 
console.log(nFF);
console.log((nAA != nBB) ? nCC < 5 && nBB == 3 ? 6 : 7 : 4);
결과 : 7

 

var nFF = (nAA != nBB) ? ((nCC < 5 && nBB == 3) ? 6 : 7) : 4;

 

이렇게 괄호를 이용하면 좀더 쉽게 구조를 파악할 수 있습니다.

 

만일 조건이 좀더 많아진다면 

var nAA = 1;
var nBB = 2;
var nCC = 3;
var nDD = 4;
var nEE = 5;
 
var nGG = nAA == nBB ? 11 : nAA == nCC ? 22 : nAA == nDD ? 33 : 44;
 
console.log(nGG);
console.log(nAA == nBB ? 11 : nAA == nCC ? 22 : nAA == nDD ? 33 : 44);
결과 : 44

 

이런 경우는 if 조건문 처럼 줄바꿈을 해주면 보기가 편해집니다. 

var nAA = 1;
var nBB = 2;
var nCC = 3;
var nDD = 4;
var nEE = 5;
 
var nGG = nAA == nBB ? 11
        : nAA == nCC ? 22
        : nAA == nDD ? 33
        : 44;
 
console.log(nGG);
console.log(nAA == nBB ? 11
        : nAA == nCC ? 22
        : nAA == nDD ? 33
        : 44);
결과 : 44

 

이렇게 하고 보면

if(nAA == nBB) return 11

else if(nAA == nCC) return 22

좀더 친숙한 if ~ else 문과 비슷하게 인식하고 사용할 수 있습니다.

 

nexacro 작업하다 grid 표현식 때문에 사용할 때마다 기억이 가물거려 정리를 해봅니다.

숫자 대신 text, edit, combo등을 사용하면 되겠죠?

 

- copy coding -


+ Recent posts