구분
원시타입
객체타입
js 는 동적 타입 언어이다. 동적 타입 언어는 값에 의해 변수의 타입이 변경된다.
C,JAVA 같이 정적 타입 언어의 경우 선언한 타입에 맞는 값만 할당할 수 있다.
동적타입 언어는 편리한 반면 그만큼 위험이 존재하는 언어이다. 개발자의 의도와 상관없이 타입이 변경될 수도 있기에 아래의 주의 사항을 생각하며 코딩하는 것이 좋다
코드는 오해하지 않도록 작성해야하며, 개발자를 위한 문서이기도 하니 가독성이 좋고 네이밍이 올바르게끔 작성하도록 노력해야 한다.
이항 산술 연산자 | 의미 | 부수효과 |
---|---|---|
+ | 덧셈 | X |
- | 뺄셈 | X |
* | 곱셈 | X |
/ | 나눗셈 | X |
% | 나머지 | X |
단항 산술 연산자 | 의미 | 부수효과 |
---|---|---|
++ | 증가 | O |
-- | 감소 | O |
+ | 어떠한 효과도 없다. | X |
- | 양수를 음수로, 음수를 양수로 반전한 값을 반환한다. | X |
할당 연산자 | 의미 | 부수효과 |
---|---|---|
+= | x += 5 === x = x + 5 | O |
-= | x -= 5 === x = x - 5 | O |
*= | x = 5 === x = x 5 | O |
/= | x /= 5 === x = x / 5 | O |
%= | x %= 5 === x = x % 5 | O |
비교 연산자 | 의미 | 설명 |
---|---|---|
== | 동등 비교 | x와 y 값이 같다 |
=== | 일치 비교 | x와 y의 값과 타입이 같다 |
!= | 부동등 비교 | x와 y의 값이 다름 |
!== | 불일치 비교 | x와 y의 값과 타입이 다름 |
NAN 의 경우 자신과 일치하지 않는 유일한 값이다. isNaN(빌트인함수) 를 통해 판별해야 한다.
대소 관계 비교 연산자 | 설명 |
---|---|
> | x와 y 보다 크다 |
< | x와 y 보다 작다 |
>= | x와 y 보다 크거나 같다 |
<= | x와 y 보다 작거나 같다 |
const a = true;
const b = a ? "true":"false" // b === "true"
쉼표 연산자는 왼쪽 피연산자부터 차례대로 피연산자를 평가하고 마지막 피연산자의 평가가 끝나면 마지막 피연산자의 평가 결과를 반환한다.
var x,y,z;
x = 1, y = 2, z = 3; // 3
소괄호('()')로 피연산자를 감싸는 그룹 연산자는 자신의 피연산자인 표현식을 가장 먼저 평가한다.
10 * 2 + 3 ; // -> 23
10 * (2 + 3); // -> 50
typeof 연산자는 피연산자의 데이터 타입을 문자열로 반환한다.
string,number,boolean,undefined,symbol,object,function 중 하나를 반환 하며 null(값) 은 반환하지 않는다.
ES7 에서 도입된 지수 연산자 **
2 ** 2; // 4
2 ** 2.5; // 5.65656
Math.pow(2,2); // 4
// Math.pow 보다 가독성이 뛰어나다.
Math.pow(Math.pow(2,2),2) === 2 ** 2 ** 2;
// 음수의 경우 괄호로 묶어야 한다
(-5) ** 2; // 25
연산자 | 개요 |
---|---|
?. | 옵셔널 체이닝 연산자 |
?? | null 병합 연산자 |
delete | 프로퍼티 삭제 |
new | 생성자 함수를 호출할 때 사용하여 인스턴스를 생성 |
instanceof | 좌변 객체가 우변의 생성자 함수와 연결된 인스턴스인지 판별 |
in | 프로퍼티 존재 확인 |