5.1 연산자
값을 만드는 행동 반드시 피연산자가 있어야 한다.
5.2 산술 연산자

전위 연산자(–i , ++i) : 먼저 변수의 값을 바꾼 다음 평가
후위 연산자(i– , i++) : 값을 바꾸기 전에 평가
1 | //전위 연산자 후의 연산자 |
5.3 연산자 우선순위

5.4 비교 연산자
두 개의 값을 비교
일치연산자 (===) : 같은 객체를 가리키거나 , 같은 타입이면서 값도 같음 / !== : 일치하지 않음
동등연산자 (==) : 같은 객체를 가리키거나, 값이 같음 ex) “33” == 33
대소관계
1 | //일치연산자와 동등연산차 차이 |
관계연산자 : 관계가 있는 값을 비교 작다(<),작거나 같다(<=),크다(>),크거나 같다(>=)
5.5 숫자비교
NaN : 그 자신을 포함하여 무엇과되 같지 않음 NaN === NaN / NaN ==NaN 모두 false
isNaN을 사용하여 NaN 값을 알아낼수 있다.
1 | //정수비교 |
5.6 문자열 병합
문자열 병합은 피연산자중 하나라도 문자열이면 문자열 병합을 수행
1 | 3 + 5 + "8"; // "88" |
5.7 논리 연산자
오직 불리언 값만 다룰수 있다. true or false
boolean이 아닌 값도 다룰 수 있고, boolean이 아닌 값을 반환하기도 한다.
5.7.1 참 같은 값과 거짓 같은 값
자바스크립트에서는 모든 데이터를 참 같은 값과 거짓 같은 값으로 나눌 수 있다.
거짓 같은 값
- undefined
- null
- false
- 0
- NaN
- ‘’ (빈 문자열)
이들 외에는 모드 참 같은 값
참 같은 값
- 모든 객체 valueOf() 메서드를 호출 했을때 false를 반환하는 객체도 참 같은 값
- 배열, 빈 배열도 참 같은 값
- 공백만 있는 문자열 “ “
- 문자열 “false”
5.8 AND, OR, NOT
자바스크립트가 지원하는 논리연산자는 AND(&&) OR(||) NOT(!)
&& : 교집합,
|| : 합집합
! : 부정

5.8.1 단축평가
x = true, y = false
x&&y =false //x의 값만 알면 y의 값을 평가할 필요도 없이 false
x||y =true //x의 값만 알면 y의 값을 평가할 필요도 없이 true
1 | //단축평가 |
5.8.2 피연산자가 불리언이 아닐때 논리 연산자가 동작하는 방법
1 | const options = suppliedOptions || { name: "Default" }; |
5.8.3 조건 연산자
유일한 3항 연산자
1 | const doIt = false; |
5.8.4 쉼표 연산자
표현식을 결합하여 두 표현식을 평가한 후, 두번째 표현식의 결과를 반환=> 마지막 표현식의 결과를 반환
for 문에서 표현식을 결합할 때 사용하거나, 함수에서 빠져나오기 전 여러 작업을 한데 묶을 때 사용합니다
1 | let x = 0, |
5.9 연산자 그룹
(괄호)에는 아무 효과도 없지만, 연산자 우선순위를 높이거나 명확히 표현하는데 사용
5.9.1 비트 연산자
별로 사용안함
5.9.2 typeOf 연산자
피연산자의 타입을 나타내는 문자열을 반환, 자바스크립트의 7가지 데이터타입(undefined, null, boolean, 숫자, 문자, 심볼, 객체)를 정확히 나타내지 못함 .
typeOf x : 권장
typeOf(x): 유효하긴 하지만 권장하진 않음

5.9.3 void 연산자
피연산자를 평가한후 undefined를 반환
링크 이동을 막아줍니다.
5.9.4 할당 연산자
변수에 값을 할당

5.10 헤체할당
객체나 배열을 변수로 해체할 수 있다. es6에서 새로 도입됨
1 | //객체 선언 |
객체를 해체할 때는 반드시 변수명과 프로퍼티 이름이 일치해야 합니다. obj에 a 프로퍼티가 없으므로 a는 undefined 해체 할당에 d라는 프로퍼티가 없으므로 d는 선언조차 되지 않음
- 배열 해체
1 | //배열 선언 |
배열을 해체할 때는 변수 이름을 마음대로 써도 됨 , 배열 순서에 대응한다.
5.11 객체와 배열 연산자

5.12 탬플릿 문자열과 표현식
어떤 표현식이든 그 값을 문자열에 넣을 수 있다.
1 | const roomTempC = 21.5; |
5.13.1 if…else 문을 3항 연산자로 바꾸기
1 | //if else문을 3항 연산자로 변경 |
5.13.2 if문을 단축 평가하는 OR 표현식으로 바꾸기
1 | if (!options) options = {}; |