[TIL/모던 자바스크립트 Deep Dive] 2023/03/28
삼항 조건 연산자?삼항 조건 연산자(ternary operator)는 말 그대로, 조건에 의해 동작하는 연산자이며 연산의 대상, 즉 피연산자가 3개이다. 조건식의 평가 결과에 따라 반환할 값을 결정한다는 점이 핵심이다.첫 번째 피연산자인 'score>=60'이라는 조건
7장. 연산자(Operator)
7-4. 삼항 조건 연산자
삼항 조건 연산자?


즉, 삼항 조건 연산자는 ``두 번째 피연산자 또는 세 번째 피연산자로 평가되는 표현식``이다.
만일 ``첫 번째 피연산자(=조건식)`의 평가 결과가 불리언 값이 아니면, 불리언 값으로 `암묵적 타입 변환``된다.

위 코드에서 연산의 결과는 0이다. 2%2는 0이고, 0은 false로 암묵적 타입 변환된다. 따라서 console에는 '짝수'가 입력된다.
if...else와의 차이
어차피 첫 번째 operand가 조건식이라면 왜 굳이 ``if...else문``을 사용하지 않고 삼항 조건 연산자를 사용하는 것일까?
삼항 조건 연산자 표현식은 값처럼 사용할 수 있지만 if...else문은 값처럼 사용할 수 없다. 한마디로, ``if...else문은 표현식이 아닌 문``이다.

변수에 할당이 되지 않는 것을 보니, 표현식이 아닌 문이라는 점은 분명하다.

조건에 따라 특정 값을 결정해야 한다면 삼항 조건 연산자 표현식을 사용하는 것이 더욱 유리할 것이다. 다만 조건에 따라 수행해야 할 문이 여러 개라면 가독성의 증진을 위해 if...else문을 활용하는 것이 더 좋은 방식이겠다!
### 7-5. 논리 연산자
논리합(||) 연산자

첫 번째 코드는 좌항이 true이다. 우항에 대한 평가는 더 이상 진행하지 않는다. 두 번째 코드도 좌항이 true이다. 마찬가지의 결론이 도출된다.
세 번째, 네 번째 코드는 좌항이 false이다. true를 찾기 위해 우항으로 논리의 여행을 떠나게 된다. 세 번째 코드는 우항에 true가 있기 때문에 true를 반환하고, 네 번째 코드는 우항에도 false가 있기 때문에 최종적으로 false를 반환하게 된다.
> **논리곱(&&) 연산자**

첫 번째, 두 번째 코드는 좌항이 모두 true이다. 우항으로의 논리 연산 여행을 떠나게 된다. 첫 번째 코드는 우항에도 true가 있기 때문에 true가 반환된다. 두 번째 코드는 우항에는 false가 있기 때문에 최종적으로 false를 반환한다.
세 번째, 네 번째 코드는 좌항에 이미 false가 있기 때문에 우항에 대한 연산을 진행하지 않게 된다. 바로 false를 반환한다.
논리 부정(!) 연산자

### 7-6. 쉼표 연산자

7-7. 그룹 연산자

단순 계산에서는 큰 의미가 없다.
### 7-8. typeof 연산자

null이 object로 반환되는 것은 자바스크립트 첫 번째 버전의 버그다. 기존 코드에 영향을 줄 수 있어서 아직까지 수정되지 못하고 있다고 한다.
따라서 ``값이 null인지 확인`할 때에는 typeof 연산자가 아니라 `일치 연산자(===)``를 사용해야 한다.

추가적으로, ``선언하지 않은 식별자`를 typeof로 연산하면 ReferenceError가 아니라 `undefined``를 반환한다.

7-9. 지수 연산자
지수 연산자는 ES7에서 도입되었다. ``좌항`의 피연산자를 `밑(base)`으로, `우항`의 피연산자를 `지수(exponent)``로 거듭 제곱하여 숫자 값을 반환한다.

7-10. 그 외의 연산자
1. ``?.`` 옵셔널 체이닝 연산자 2. ``??`` null 병합 연산자 3. ``delete`` 프로퍼티 삭제 4. ``new`` 생성자 함수를 호출할 때 사용하여 인스턴스를 생성 5. ``instanceof`` 좌변의 객체가 우변의 생성자 함수와 연결된 인스턴스인지 판별 6. ``in`` 프로퍼티 존재 확인
연산자 이후 챕터에서 깊게 다룬다고 한다.
7-11. 연산자의 부수효과
부수효과(side effect)는 ``다른 코드에 영향`을 주는 효과를 의미한다. 부수효과가 있는 연산자는 `할당 연산자, 증가/감소 연산자, delete 연산자``다.

7-12. 연산자의 우선순위
여러 개의 연산자로 이루어진 문이 실행될 때, 연산자가 실행되는 순서를 ``연산자 우선순위``라고 한다. 우선순위를 나열한 표가 있는데 공무원 시험도 아니고...이걸 외울 필요는 없을 것 같다.
기억에 의존하기보다는, 우선순위가 가장 높은 ``그룹 연산자`를 통해 `우선순위를 명시적으로 조절``하는 것이 유리한 방식일 것이다.
7-13. 연산자의 결합순서
좌항에서 우항으로 평가를 수행할 것인지, 우항에서 좌항으로 평가를 수행할 것인지에 관한 논의가 ``연산자의 결합순서``이다.

사용하면서 직관적으로 익히면 되는 부분이다.
More to read
프론트엔드와 백엔드 사이
HTTP 상태 코드는 프론트엔드에서 백엔드로 보냈던 요청의 수행 결과를 의미하는 일종의 약속이며, API를 구성하는 핵심 요소 중 하나입니다. 상태 코드와 관련하여, 백엔드는 잘 모르는 프론트엔드의 슬픈 사정이 있습니다.아래는 요청이 실패했음에도, 백엔드에서 상태 코드
JWT토큰 관리 방식 톺아보기
0. 들어가며 🎯 서비스에 접근하려는 사용자가 누구인지 확인하는 과정을 사용자 인증이라고 합니다. 인증된 사용자에게 주어진 권한을 확인하는 작업은 인가라고 부릅니다. 이번 글에서는 인가는 다루지 않습니다. 사용자 인증에는 많은 방식이 있지만, 오늘은 세션 인증 방
A2AA2A / MCP 멀티 에이전트 오케스트레이션
0. 들어가며 ✍️ Google for Developers에, 레스토랑 공급망 시나리오로 엮은 6대 프로토콜(MCP, A2A, UCP, AP2, A2UI, AG-UI)에 대한 가이드가 게시된 이후, MCP와 A2A부터 구현해 보는 것이 좋을 것 같다는 생각이 들었습니