이항 산술 연산자
| 이항 산술 연산자 | 의미 | 부수효과 |
|---|---|---|
| + | 덧셈 | x |
| - | 뺄셈 | x |
| * | 곱셈 | x |
| / | 나눗셈 | x |
| % | 나머지 | x |
단항 산술 연산자
| 단항 산술 연산자 | 의미 | 부수 효과 |
|---|---|---|
| ++ | 증가 | o |
| -- | 감소 | o |
| + | 어떤 효과도 없음 | x |
| _ | 양수를 음수, 음수를 양수 | x |
피연산자에 +, - 단항 연산자를 사용하면 피연산자를 숫자 차입으로 반환. 부수효과 x
let x = '1'
console.log(+x) // 1
console.log(x) // "1"
x = true;
console.log(+x) // 1
console.log(x) // true
x = false;
console.log(+x) // 0
console.log(x) // false
x = "Hello"
console.log(+x) // NaN
console.log(x) // "Hello"
-true // -1
-'Hello' // NaN
+연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작함
'1' + 2 // '12'
1 + '2' // '12'
1 + 2 // 3
1 + true // 2
1 + false // 1
1 + null // 1
1 + undefined // NaN
// 암묵적 타입 변환, 타입 강제 변환
| 할당 연산자 | 예 | 동일 표현 | 부수 효과 |
|---|---|---|---|
| = | x=5 | x=5 | o |
| += | x+=5 | x=x+5 | o |
| -= | x-=5 | x=x-5 | o |
| *= | x*=5 | x=x*5 | o |
| /= | x/=5 | x=x/5 | o |
| %= | x%=5 | x=x%5 | o |
| 비교 연산자 | 의미 | 사례 | 설명 |
|---|---|---|---|
| == | 동등 비교 | x==y | x와 y의 값이 같음 |
| === | 일치 비교 | x===y | x와 y의 값과 타입이 같음 |
| != | 부동등 비교 | x!=y | x와 y의 값이 다름 |
| !== | 불일치 비교 | x!==y | x와 y의 값과 타입이 다름 |
동등 비교 연산자는 결과를 예측하기 어려워 사용 x
5 == '5' //true
'0' == ''; // false
0 == ''; // true
0 == '0' // true
false == 'false' // false
false == '0' // true
false == null; // false
false == undefined // false
일치 비교
5 === '5' // false
NaN === NaN // false
Object.is(NaN, NaN) //true
0 === -0 //true
Object.is(-0, +0) //false
조건식 ? 조건식이 true일 때 반환할 값 : 조건이 false일 때 반환할 값
let x = 10;
//삼항 조건 연산자 표현식은 표현식인 문. 값처럼 사용 가능
let result = x % 2 ? '홀수' : '짝수';
console.log(result); // 짝수
| 논리 연산자 | 의미 | 부수 효과 |
|---|---|---|
| || | 논리합 | x |
| && | 논리곱 | x |
| ! | 부정 | x |
논리 부정(!) 연산자는 언제나 불리언 값을 반환. 피연산자가 불리언 값이 아니면 불리언 타입으로 임묵적 타입 변환
!0 // true
!'Hello' // false
number, boolean, undefined, symbol, object, function중 하나를 반환.
let a = null;
typeof a === null; // false typeof null -> object 자바스크립트의 버그이나 기존코드에 영향을 줄수 있기 때문에 수정되지 않음
a === null; // true
typeof NaN // number
//선언되지 않은 식별자의 typeof는 undefined를 반환
2 ** 2 // 4
Math.pow(2, 2) // 4 지수 연산자가 도입되기 전에 사용
-5 ** 2 // SyntaxError
(-5) ** 2 // 25