연산자 우선순위, 다중 삼항 연산자

oYJo·2025년 3월 21일

JavaScript

목록 보기
22/52

연산자

1️⃣ 연산자 우선순위

표현식은 결합성과 무관하게 항상 왼쪽에서 오른쪽으로 진행된다.

우선순위연산자 유형결합성연산자
19그룹없음( … )
18멤버 접근좌결합성… . …
계산된 멤버 접근좌결합성… [ … ]
new (인자 리스트 제공)없음new … ( … )
함수 호출좌결합성… ( … )
옵셔널 체이닝좌결합성?.
17new (인자 리스트 생략)우결합성new …
16후위 증가없음… ++
후위 감소… --
15논리 NOT우결합성! …
비트 NOT~ …
단항 양부호+ …
단항 부정- …
전위 증가++ …
전위 감소-- …
typeoftypeof …
voidvoid …
deletedelete …
awaitawait …
14거듭제곱우결합성… ** …
13곱하기좌결합성… * …
나누기… / …
나머지… % …
12더하기좌결합성… + …
빼기… - …
11비트 왼쪽 시프트좌결합성… << …
비트 오른쪽 시프트… >> …
비트 부호 없는 오른쪽 시프트… >>> …
10미만좌결합성… < …
이하… <= …
초과… > …
이상… >= …
in… in …
instanceof… instanceof …
9동등좌결합성… == …
부등… != …
일치… === …
불일치… !== …
7비트 AND좌결합성… & …
7비트 XOR좌결합성… ^ …
6비트 OR좌결합성`…
5논리 AND좌결합성… && …
4논리 OR좌결합성`…
널 병합 연산자좌결합성… ?? …
3조건 (삼항)우결합성… ? … : …
2할당우결합성… = …
… += …
… -= …
… **= …
… *= …
… /= …
… %= …
… <<= …
… >>= …
… >>>= …
… &= …
… ^= …
`…
… &&= …
`…
… ??= …
yield우결합성yield …
yield*yield* …
1쉼표 / 시퀀스좌결합성… , …

출처 : mdn https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Operator_precedence

✔️연산자? 피연산자?
연산 : 새로운 것을 만드는 행위
2+3=5
연산자 : 기호 ( +, = …)
피연산자 : 연산을 당하는 인수(2, 3…)
= 연산을 당하는 함수 호출 변수

인수 1개 연산 = 단항
2개 피연산자 = 이항
3개 피연산자 = 삼항

condition, exprIfTrue, exprIfFalse = 피연산자 3개
? : = 연산자

✔️인수(argument)? 인자(parameter)?
인수 : 함수를 호출할 때 건네주는 변수
인자 : 함수에서 정의되어 함수 내부에서 사용되는 변수 = 파라미터, 매개변수

⭐️비교 연산자 자체가 true, false를 반환하기에
let a = age > 20 ? true : false;
= let a = age > 18;
와 같기에 조건 연산자를 사용하지 않아도 된다.

2️⃣ 다중 삼항 연산자

다중 ?

?를 여러 개 사용하면 복수 조건 사용 가능

let a = (age ≤ 5) ?5이하” 
: (age ≤ 50) ?50이하” 
: (age ≤100) ?100이하” 
:100초과”;

num > 0 ? “양수” : (num < 0 ? “음수” : “0”));
num가 0보다 크면 양수이고
0보다 작으면 ()이다.
() : 0보다 작으면 음수이다.
0보다 크지도 않고 작지도 않으면 0이다

const info = prompt('What is your number?');
 
if (info <= 5) {
    alert("5 이하입니다.");
} else if (info <= 10) {
    alert("10 이하입니다.");
} else if (info <= 15) {
    alert("15 이하입니다.");
} else {
    alert("15보다 큽니다.");
}

else~if로 사용하는 것을..

const info = prompt('What is your number?');
const message = (info <= 5) ? "5 이하입니다."
    : (info <= 10) ? "10 이하입니다."
    : (info <= 15) ? "15 이하입니다."
    : "15보다 큽니다.";
 
alert(message);

5보다 작으면 “5이하입니다” 출력 / 크면 info ≤10 조건식으로 이동함
10보다 작으면 “10 이하입니다” / 크면 info≤15 조건식으로 이동함
10보다 작으면 “15이하입니다” / 크면 “15보다 큽니다” 출력

삼항연산자 vs if문 차이점

if문이 더 가독성이 좋기에 삼항연산자 사용을 지양하라는 말이 있는데 컴퓨터 최적화에서도 정말 그럴까?

결론은 아니었다. 결과는 동일하다.

하지만, 어디에서는 삼항연사자가 속도는 빠르고 메모리를 많이 사용한다고 적혀있고, if문은 속도는 느리지만 메모리를 덜 사용한다는 말도 있다.


profile
Hello! My Name is oYJo

0개의 댓글