<모던 자바스크립트 Deep Dive> 07~08장 연산자, 제어문 요약
07. 연산자
1) '연산자'
- 하나 이상의 표현식을 대상으로 작업을 수행하여 하나의 값을 만듦
- 연산의 대상이면서 값으로 평가될 수 있는 표현식이 '피연산자'
- 피연산자 + 연산자의 조합도 표현식임
2) 산술 연산자
- 이항 산술 연산자(2개의 피연산자를 산술 연산함), 단항 산술 연산자(1개의 피연산자를 산술 연산함)로 구분
- 이항 산술 연산자의 종류로는 +, -, *, /, %
- 단항 산술 연산자의 종류로는 ++, --, +, -
- ++, -- 연산자는 위치에 따라 의미가 달라지며(전/후), 피연산자의 값을 변경하는 부수 효과 존재
- +, - 연산자는 숫자 타입이 아닌 피연산자일 때 피연산자를 숫자 타입으로 변환함
- + 연산자는 피연산자 중 하나 이상이 문자열이면 문자열 연결 연산자로 동작
3) 할당 연산자
- 우항의 값을 평가하여 좌항에 할당
- 값을 변경하는 부수 효과 존재
- 표현식인 문으로, 값으로 평가됨
4) 비교 연산자
- 제어문의 조건식에서 주로 사용
- 불리언 값을 반환
- 동등 비교 연산자는 느슨한 비교를 하기 때문에 타입이 같지 않으면 타입 변환을 통해 일치시킨 후 값 비교
- 일치 비교 연산자는 엄격한 비교를 하기 때문에 타입과 값 모두 같을 때만 true 반환
- NaN 조사는 빌트인 함수 Number.isNaN을 별개로 사용 필요, 양의 0과 음의 0은 비교 시 모두 true 반환 -> ES6에서 도입된 Object.is 메서드를 사용하면 기존 비교 연산자만으로 NaN과 양의 0, 음의 0 비교 가능
5) 삼항 조건 연산자
- 조건식 ? 조건식이 true일 때 반환할 값 : 조건식이 false일 때 반환할 값
- if...else 문과 달리 값처럼 사용 가능
6) 논리 연산자
- 논리 부정(!) 연산자는 언제나 불리언 값을 반환하며 암묵적 타입 변환 일어남
- 논리합 혹은 논리곱 연산자는 언제나 2개의 피연산자 중 하나의 값을 반환
- 드 모르간의 법칙 사용으로 가독성 높일 수 있음
7) typeof 연산자
- 총 7개의 문자열(string, number, boolean, undefined, symbol, object, function) 중 하나를 반환
- null은 object가 반환되는 버그 존재 -> typeof 연산자 대신 일치 연산자(===) 사용 권장
- 선언하지 않은 식별자는 undefined를 반환하므로 주의
8) 지수 연산자
- ES7부터 사용
- 이전에는 Math.pow 메서드 사용
- 좌항이 밑, 우항이 지수
9) 부수 효과가 있는 연산자
- 할당 연산자(=), 증가/감소 연산자(++/--), delete 연산자
10) 연산자의 우선순위
- 연산자가 여러개일 때 우선순위에 따라 실행됨
- 우선순위가 가장 높은 그룹 연산자를 사용하여 우선순위 조절하는 방법으로 권장
08. 제어문
1) '제어문'
- 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)
- 코드의 실행 흐름을 인위적으로 제어 가능하지만, 가독성 해치므로 대신에 고차 함수를 활용하는 방법 권장
- 코딩 스킬을 위해 이해는 필요
2) 블록문
- 중괄호로 묶은 것
- 하나의 실행 단위
- 세미콜론 붙이지 않음(자체 종결)
3) 조건문
- 조건식에 따라 코드 블록 실행
- 불리언 값으로 평가
- if...else문과 switch문
1. if...else문
- 조건식에 암묵적 타입 변환(불리언 값으로 변환) 일어남
- else if문과 else문은 옵션임
- 대부분 삼항 조건 연산자로 변경 가능하지만, 실행해야 할 내용이 복잡하여 여러 줄의 문이 필요하면 if...else문을, 단순히 값을 결정하여 변수에 할당하는 경우라면 삼항 조건 연산자 사용하는 것을 권장
2. switch문
- if...else문과 다른 점은 불리언 값 보다는 문자열이나 숫자 값으로 평가됨
- break는 코드 블록 탈출 역할
- 조건이 많을 때만 switch 사용 권장, 이외에는 if...else문 사용 권장
4) 반복문
- for문, while문, do...while문
- for문을 이해하는 것이 제일 중요함
- for문은 반복 횟수가 명확할 때, while문은 반복 횟수가 불명확할 때 주로 사용
- while문에서는 암묵적 타입 변환(불리언 값으로 변환) 일어남
- 무한 루프 탈출은 break
5) continue문
- 코드 블록 실행을 현재 시점에서 중단하고 반복문의 증감식으로 이동하여 실행을 계속하는 형태
- for문 내에 if문이 존재할 때, if문 내에서 실행해야 할 코드가 길다면 continue문 사용하는 것을 권장
참고 : 도서 <모던 자바스크립트 Deep Dive>