연산자

김태형·2021년 11월 19일
0

Javascript

목록 보기
8/12

연산자 부분은 대부분의 언어가 비슷하기 때문에 중요한 부분만 짚고 넘어가겠습니다.

연산자란

하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입 지수 연산등을 수행하는것. 이 때 대상을 피연산자 라고한다. 피연산자는 값으로 표현될 수 있는 표현식이어야만 함

산술

산술연산 특이한 부분

1 + 2 = 3;
1 + true = 2; //true 는 1으로 변환
1 + false = 1; //false 는 0으로 변환
1 + null = 1 ; //null 는 0으로 변환
1 + undefined = NaN; //연산 불가능
할당문은 값으로 평가되는 표현식인 문으로서 할당된 값으로 평가된다.

console.log(x=10); //10

a = b = c = 0; //연쇄할당

비교

==  //자동 형변환 후 값이 같은지
=== //값과 타입이 같은지
!=  //자동 형변환 후 값이 다른지
!== //값과 타입이 다른지

NaN 주의
NaN을 반환하는 연산

/*
숫자로서 읽을 수 없음 (parseInt("어쩌구"), Number(undefined))
결과가 허수인 수학 계산식 (Math.sqrt(-1))
피연산자가 NaN (7 ** NaN)
정의할 수 없는 계산식 (0 * Infinity)
문자열을 포함하면서 덧셈이 아닌 계산식 ("가" / 3)
*/

NaN은 자신과 일치하지 않는 유일한 값

NaN === NaN;        // false
Number.NaN === NaN; // false
isNaN(NaN);         // true
isNaN(Number.NaN);  // true

function valueIsNaN(v) { return v !== v; }
valueIsNaN(1);          // false
valueIsNaN(NaN);        // true
valueIsNaN(Number.NaN); // true

그러나 isNaN()과 Number.isNaN()의 차이를 주의해야 합니다.
isNaN은 현재 값이 NaN이거나, 숫자로 변환했을 때 NaN이 되면 참을 반환하지만,
Number.isNaN은 현재 값이 NaN이어야만 참을 반환합니다.

삼항조건 연산자

조건 ? 참일 때 실행할 코드 : 거짓일 때 실행할 코드;

var low_high = a > 30 ? "크다" : "작다";

삼항조건 연산자는 얼핏보면 if 조건문과 비슷해 보여서 그냥 형태가 다른 if문이구나~ 할 수 있지만
사실은 사용용도부터가 다르다. 삼항조건 연산자는 변수에 할당이 가능한 표현식인 문이기 때문이다.

var low_high = if(a>30){low_high="크다"}else{low_high="작다"}

if문은 위와 같은 형태로는 절대 사용할 수 없다.
if문은 표현식이 아닌 문이고 삼항조건 연산자는 표현식인 문이기 때문이다.

따라서 삼항조건 연산자는 값으로 사용할 수 있다.

논리 연산자

&& 논리곱
|| 논리합
!  부정

"DOG"||"CAT" //DOG
"DOG"&&"CAT" //CAT

단축평가
표현식을 평가하는 도중 결과값이 확정된경우 그 뒤에 연산을 하지 않는것. 위에 || 의 결과값을 잘 보자.

profile
생각정리 공간

0개의 댓글

관련 채용 정보