두번째 공부(개발공부)/JavaScript DeepDive

TIL ] 연산자 part.4 - typeof 연산자 등

YTReeee 2023. 5. 15. 22:42

연산자에 대해 마지막으로 정리해보고자 한다.


typeof 연산자란?

피 연산자의 데이터 타입을 문자열로 반환해준다.

데이터 타입은 "number", "string", "boolean", "object", "function", "symbol", "undefined" 7가지 중 한가지를 반환한다.

* 예외 : null 값의 경우에는 object를 반환한다. 이에 null값 검사 시에는 일치연산자(===)를 사용하기를 권장한다. 선언하지 않은 식별자의 경우에는 undefined를 반환하기 때문에 주의해야 한다.


삼항 조건 연산자

//조건식 ? 조건식이 true일 때 반환할 값 : 조건식이 false일 때 반환할 값

let grade = score >= 90 ? "Gold" : "Silver"

if(score >= 90) {
	return "Gold";
    } else {
    return "Silver";
};

물음표(?) 좌측의 피연산자는 조건식이며, 불리언타입의 값으로 평가된다.

조건식 평가 결과가 true면 물음표(?) 우측 첫번째 피연산자가 반환된다. false면 물음표 우측 두번째 피연산자가 반환된다.

위의 코드블럭과 같이 삼항 조건 연산자 표현식을 if ~ else 문으로 표현할 수 있다.

다만, 가장 큰 차이점은 해당 조건식이 값처럼 사용될 수 있느냐 없느냐이다.

삼항 조건 연산자의 경우는 값처럼 사용이 가능하지만, if ~ else 문은 표현식이 아닌 문이기 때문에 값처럼 사용할 수 없다.

한개의 조건에 따라 결정하는 경우에는 삼항 조건 연산자가 사용이 유리하다. 하지만 조건에 따라 수행해야 할 문이 두개 이상이라면 if ~ else 문이 가독성이 좋다.


기타 연산자

연산자 예시 의미 비고
쉼표연산자 let a, b, c;
a =1, b = 2, c=3; // 3
a, b, c라는 이름의 변수를 선언한다.
a에 1, b에 2, c에 3을 할당한다.
왼쪽부터 차례로 피연산자를 평가하고, 피연산자의 평가가 끝나면 마지막 피연산자의 평가결과를 반환한다.
그룹연산자 5 * (3 + 2) ; // 25 ()안에 있는 데이터를 먼저 연산한 후, ()값과 ()밖의 값을 연산한다. 산수에서 () 안에 있는 숫자를 먼저 게산해야 하는 것과 같다(우선순위).
지수연산자 2 ** 2 // 4 좌항을 밑, 우항을 지수로 거듭제곱하여 숫자 값을 반환한다. ES7에서 도입되었다.
Math.pow(2, 2); // 4 ES7에서 지수연산자가 도입되기 전에 사용하던 방법
(-5) ** 2 // 25 음수를 밑으로 계산하려면 괄호로 묶어야 한다.

그 외의 연산자

연산자 개요
?. 옵셔널 체이닝 연산자
?? null 병합 연산자
delete 프로퍼티 삭제
new 생성자 함수를 호출할 때 사용하여 인스턴스 생성
instanceof 좌변의 객체가 우변의 생성자 함수와 연결된 인스턴스인지 판별
in 프로퍼티 존재 확인

연산자의 부수효과

대부분의 연산자에는 부수효과가 없지만,

할당연산자(=), 증가/감소 연산자(++/--), delete 연산자는 다른 코드에 영향을 주는 부수효과가 있다.


연산자 우선순위

연산자의 종류가 많기 때문에 하나하나 기억하기보다는 연산자 우선순위가 가장 높은 그룹 연산자를 사용하여 우선순위를 명시적으로 조절하는 것이 권장된다.


4일에 걸친 연산자 정리가 끝이났다.

모던 자바 스크립트 Deep Dive의 내용을 곱씹으며, 정리를 해보았다.

처음 시작은 백준 문제를 풀기 위해서였는데.. 4일이 걸릴 줄은 몰랐다.

사실 조금 더 부지런 떨었으면, 주말 내에 다 정리할 수 있었을 것 같지만..

자책보다는 포기하지 않은것에 박수! ㅎ

다른 챕터는 조금 더 빠르게 읽고 나만의 언어로 정리해볼 수 있도록 노력해보자!