하나하나 세세하게 보고 필기하면서 공부했드니 손가락이 너무 아프다.
엄청 중요한 파트에서만 빡세게 필기하면서 공부해야겠다.
연산자는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행해 하나의 값을 만든다.
이 때 연산의 대상을 피연산자
라 한다.
피연산자는 값으로 평가될 수 있는 표현식
이여야 한다.
이항binary
산술 연산자는 2개의 피연산자를 산술 연산하여 숫자 값을 만든다.
+
,-
,/
,*
,%
가 존재한다.
5 + 2; // 7
5 % 2; // 1
지피티한테 물어보니 파이썬과 같은 몫을 구하는
//
연산자는 존재하지 않는 것 같다.console.log(10 / 3); // 3.3333.. console.log(Math.floor(10 / 3)); // 3
처럼 그냥 소수점을 내려버려야 하는듯
이항 산술 연산자는 피연산자의 값이 변경되지 않고 새로운 값을 만든다
단항unary
산술 연산자는 1개의 피연산자를 산술 연산하여 값을 만든다.
++
: 1씩 증가--
: 1씩 감소+
: +1 을 곱한 숫자 값 생성 ,'5'와 같이 숫자 값을 가진 문자열에 사용하면 숫자형으로 변경-
: -1 을 곱한 숫자 값 생성 ,'5'와 같이 숫자 값을 가진 문자열에 사용하면 숫자형으로 변경단항 산술 연산자는 피연산자의 값을 변경하는 부수효과가 존재한다
증가/감소 연산자는 위치에 의미가 있다.
let x = 10;
y = x++;
console.log(x, y); // 10 11
z = ++x;
console.log(x, z); // 11 11
어떤 피연산자를 할당 할 때 단항 산술 연산자가 뒤에 나타나면 선할당 후연산
앞에 나타나면 선연산 후할당
으로 이뤄진다.
+식별자
, -식별자
같은 경우엔 식별자를 숫자 타입으로 변환하여 반환한다.
let x = '1';
console.log(typeof x); //string
console.log(`${-x} ${typeof -x}`); //
+
연산자는 피연산자 중 하나 이상이 문자열일 경우 문자열 연결 연산자로 동작한다.
let result = 1 + '2';
console.log(result, typeof result); // 12 string
암묵적으로 타입이 변환된다.
이 부분은 파이썬과 같다.
다만 할당 연산자는 표현식인 문이다.
let x;
console.log((x = 10)); // 10
이러한 특징을 이용해 여러 변수에 동일한 값을 연쇄 할당이 가능하다.
let a, b, c;
a = b = c = 10
좌항과 우항의 피연산자가 같은 값으로 평가되는지를 비교하고 불리언 값을 반환한다.
비교 연산자로는 두 연산자가 같은지를 묻는 ==
, ===
와 다른지를 묻는 !=
, !==
가 존재한다.
== , !=
은 동등 비교 연산자로 두 식별자의 값
이 같은지를 묻는다.
=== , !==
은 일치 비교 연산자로 두 식별자의 값
과 데이터 타입
이 같은지를 묻는다.
let score = 60;
let result = score > 70 ? 'pass' : 'fail';
console.log(result);
삼항 조건 연산자는
조건식 ? 조건식이 true 일 때 반환할 값 : 조건식이 false 일 때 반환할 값
으로 사용 할 수 있으며 값을 다른 식별자에 할당하는 것도 가능하다.
조건에 따라 값을 할당하는 방식으로
let score = 60;
let result;
if (score > 70) {
result = 'pass';
} else {
result = 'fail';
}
console.log(result);
이런식으로도 가능하지만 if else
조건문 자체는 값이 평가되지 않는 표현식이기 때문에
result = if (score > 70) {
result = 'pass';
} else {
result = 'fail';
}
console.log(result); // SyntaxError: Unexpected token 'if'
처럼 사용하는 것은 불가능하다.
논리 연산자는 우항과 좌항의 피연산자를 논리 연산한다.
||
: 논리합 (OR
) 으로 둘 중 하나라도 True
이면 True
&&
: 논리곱 (And
) 로 둘 모두 True
이면 True
!
: 부정으로 False
면 True
논리 연산자에서
OR
연산은 하나라도true
이면true
를 반환하고 연산을 멈추기 때문에 가장 가능성이 높은 것을 앞에 두면 불필요한 연산들을 할 필요가 없다.
And
연산도 하나라도false
가 나오면 연산이 멈추기 때문에 가장 가능성이 낮은 것을 앞에 두면 불필요한 연산들을 할 필요가 없다.