카테고리 없음

모던 자바스크립트 (스터디) 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 ,