해당 게시물은 모던 자바스크립트 Deep Dive 책을 인용 및 참고하여 작성했음을 알려드립니다.
+, -, *, /, %
단항 산술 연산자는 1개의 피연산자를 산술 연산하여 숫자 값을 만든다.
단항 산술 연산자 : ++, --, +, -
++
, --
연산자는 피연산자의 값을 변경하는 부수 효과가 있다.
피연산자의 값을 변경하는 암묵적 할당이 이뤄짐.
var x = 1;
x++; // x = x + 1;
console.log(x); // 2
전위 증가/감소 연산자 : 피연산자의 값을 증가/감소 시킨 후 다른 연산을 수행한다.
후위 증가/감소 연산자 : 먼저 다른 연산을 수행한 후에 피연산자의 값을 증가/감소 시킨다.
숫자 타입이 아닌 피연산자에 +
단항 연산자를 사용하면 숫자 타입으로 변환하여 반환한다.
+
연산자는 피연산자 중 하나 이상이 문자열이면 문자열 연결 연산자로 동작한다.
"1" + 2; // "12"
1 + "2"; // "12"
1 + 2; // 3
1 + true; // 2
1 + false; // 1
1 + null; // 1, null은 0으로 타입 변환된다.
1 + undefined; // NaN, undefined는 숫자 타입으로 변환 안됨.
개발자의 의도와 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 변환되기도 한다. 이를 암묵적 타입 변환(implicit coercion) 또는 타입 강제 변환(type coercion)이라고 한다.
비교 연산자는 좌항과 우항의 피연산자를 비교한 다음 결과를 불리언 값으로 반환한다.
== 동등 비교
, === 일치 비교
, != 부동등 비교
, !== 불일치 비교
동등 비교 연산자는 좌항과 우항의 피연산자를 비교할 때 암묵적 타입 변환을 통해 타입을 일치 시킨 후 비교한다.
5 == 5; // true
5 == "5"; // true
동등 비교 연산자는 예측하기 어려운 결과를 만들어내기 때문에 일치 비교 연산자를 사용하는 것이 좋다.
일치 비교 연산자는 좌항과 우항의 피연산자가 타입과 값이 같은 경우에만 true
를 반환한다.
5 === 5; // true
5 === "5"; // false
NaN
은 자신과 일치하지 않는 유일한 값이다. NaN === NaN; // false
NaN
인지 확인하려면 빌트인 함수 Number.isNaN
을 사용한다. Number.isNaN(NaN); // true
부동등 비교 연산자와 불일치 비교 연산자는 동등 비교 연산자, 일치 비교 연산자의 반대 개념이다.
var result = score >= 60 ? "pase" : "fail";
조건식 ? 조건식이 true 반환 값 : 조건식이 false 반환 값
var result = if (...) // SyntaxError
|| (논리합OR 연산자)
, && (논리곱AND 연산자)
, ! (부정NOT 연산자)
!0; // true
!"FALSE"; // false
10 * 2 + 3; // 23
10 * (2 + 3); // 50, 그룹 연산자를 사용하여 우선순위를 조절
두 번째 문은 2 + 3
을 먼저 연산하고 10 * 5
를 연산한다.typeof
연산자는 피연산자의 데이터 타입을 문자열로 반환한다. null
을 반환하는 경우는 없다. typeof
연산자가 반환하는 문자열은 해당 데이터 타입과 정확히 일치하지는 않다.null
을 "object"
로 반환하는 것을 주의하자.typeof
연산해 보면 ReferenceError가 아닌 undefined를 반환하는 것을 주의하자.2 ** 2; // 4
2 ** -2; // 0.25
2 ** 0; // 1
Math.pow
메서드를 사용했다.-5 ** 2; // SyntaxError
(-5) ** 2; // 25
2 * 5 ** 2; // 50