카테고리 없음
모던 자바스크립트 (스터디) 7-5~13장
stella0905
2023. 7. 13. 19:56
쉼표 연산자
왼쪽 피 연산자부터 차례대로 평가하고 마지막 피연산자의 평가 결과를 반환한다.
var x,y,z;
x = 1, y = 2, z = 3; //3
그룹 연산자
소괄호('()')로 피연산자를 감싸는 글룹 연산자는 자신의 피 연산자인 표현식을 가장 먼저 평가한다.
그룹연산자는 연산자 우선순위가 가장 높다.
10 * 2 + 3 // 23
10 * (2 + 3) // 50
typeof 연산자
typeof 연산자는 7가지 문자열중 하나를 반환한다.
typeof | 반환 |
' ' | string |
1 | number |
NaN | number |
true | boolean |
undefined | undefined |
Symbol() | symbol |
null | object |
[] | object |
{} | object |
new Data() | object |
/test/gi | object |
function () {} | function |
typeof 연산자로 null 값을 연산해 보면 'null'이 아닌 'object'를 반환한다는데 주의해야 한다.
null타입인지 확인할 때는 typeof 연산자를 사용하지 말고 일치 연산자를 사용해야 한다.
var foo = null;
typeof foo === null; // false
foo === null // true
지수 연산자
좌항의 피 연산자를 밑으로 우항의 피연산자를 지수로 거듭 제곱한다.
지수 연산자가 도입 되기 이전에는 Math.pow메서드를 사용했고 지수 연산자는 Math.pow메서드보다 가독성이 좋다.
2 ** (3 ** 2); // 512
Math.pow(2, Math.pow(3,2)); // 512
음수를 거듭제곱의 밑으로 사용해 계산하려면 괄호로 묶어야 한다.
-5 ** 2 ; // 에러발생
(-5) ** 2; // 25
지수 연산자는 이항 연산자 중에서 우선순위가 가장 높다.
2 * 5 ** 2; // 50
그 외의 연산자
연산자 | 개요 |
?. | 옵셔널 체이닝 연산자 |
?? | null 병합 연산자 |
delete | 프로퍼티 삭제 |
new | 생성자 함수를 호출할 때 사용하여 인스턴스 생성 |
instanceof | 좌변의 객체가 우변의 생성자 함수와 연결된 인스턴스인지 판별 |
in | 프로퍼티 존재 확인 |
연산자의 부수 효과
대부분의 연산자는 다른 코드에 영향을 주지 않는다. 하지만 일부 연산자는 다른 코드에 영향을 주는 부수 효과가 있다.
부수효과가 있는 연산자 : 할당 연산자(=), 증가/감소 연산자(++/--), delete 연산자
연산자의 우선순위
우선순위 | 연산자 |
1 | ( ) |
2 | new(매개변수 존재), [](프로퍼티 접근), ( )(함수호출), ?.(옵셔널 체이닝 연산자) |
3 | new(매개변수 미존재) |
4 | x++, x-- |
5 | !x, +x, -x, ++x, --x, typeof, delete |
6 | **(이항 연산자 중에서 우선순위가 가장 높다) |
7 | *, / , % |
8 | +, - |
9 | <, <= ,> ,>=, in, instanceof |
10 | ==, !=, ===, !== |
11 | ??(null 병합 연산자) |
12 | && |
13 | || |
14 | ? ... : ... |
15 | 할당 연산자(=,+=,-=,...) |
16 | , |