본문 바로가기

TIL

<모던 자바스크립트 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>