1. 숫자 자료형으로 표현되는 것
(1) 양과 음의 정수와 실수
// 자바스크립트에는 정수와 실수의 자료형이 따로 있지 않음
let integer = 100;
let real = 1.234;
let negative = -5.67;
console.log(
typeof integer,
typeof real,
typeof negative
); // number number number
(2) 무한대
let x = 1 / 0;
console.log(x, typeof x); // Infinity 'number'
// 무한대에는 양음이 있음
console.log(-x, typeof -x); // -Infinity 'number'
let y = -1 / 0;
console.log(y, typeof y); // -Infinity 'number'
let z = Infinity;
console.log(z, typeof z); // Infinity 'number'
(3) 숫자가 아닌 것 (Not a Number)
let x = 1 / 'abc';
let y = 2 * '가나다';
let z = NaN;
console.log(x, typeof x); // NaN 'number'
console.log(y, typeof y); // NaN 'number'
console.log(z, typeof z); // NaN 'number'
- 숫자가 아닌 것도 자료형은 number 로 출력됨
// NaN은 양음이 없음
console.log(-NaN); // NaN
⭐️ 주어진 값이 NaN인지 여부 확인하는 방법
let x = 1 / 'abc';
console.log(
x,
x == NaN, // 이 두 가지 방법으로는
x === NaN, // NaN 인지 알 수 없음
isNaN(x), // 숫자가 아닐 시 true
Number.isNaN(x) // 보다 엄격한 버전
);
- isNaN(), Number.isNaN() 를 사용하여 주어진 값의 NaN 여부를 확인할 수 있음
★ isNaN 과 Number.isNaN 의 차이
기능 ( 메서드 ) | 설명 |
isNaN | 숫자가 아니다 싶으면 무조건 true 반환 |
Number.isNaN | 무조건 숫자가 아니어야만 true 반환 |
console.log(
typeof '1', isNaN('1'), Number.isNaN('1')
); // 특정 숫자로 변환 가능한 문자
// string false false
console.log(
typeof true, isNaN(true), Number.isNaN(true)
); // true는 1, false는 0으로 변환됨
// boolean false false
console.log(
typeof 'a', isNaN('a'), Number.isNaN('a')
); // ⚠️ 특정 숫자로 변환 불가인 문자의 경우 차이
// string true false
console.log(
typeof (1/'a'), isNaN(1/'a'), Number.isNaN(1/'a')
); // NaN값인 경우
// number true true
2. 연산자
(1) 산술 연산자
① 이항 산술 연산자
- +, -, *, /, %, **
- 셈의 결과를 반환
- 부수효과 없음
// 값 반환
let x = 10;
let y = x * 10;
console.log(y); // 100
console.log(
y + 1, // 덧샘
y - 1, // 뺄셈
y * 2, // 곱셈
y / 5, // 나눗셈
y % 3, // 나머지
y ** 2 // 제곱
); // 101 99 200 20 1 10000
// 부수효과 없음
console.log(y); // 100
// 널리 사용되는 홀수와 짝수의 판별법
console.log(
'홀수 ',
123 % 2,
55 % 2,
999 % 2
); // 홀수 1 1 1
console.log(
'짝수 ',
2 % 2,
100 % 2,
8 % 2
); // 짝수 0 0 0
💡 괄호의 사용
console.log(
4 * 1 + 2,
4 * (1 + 2),
4 * -(1 + 2),
-(4 * -(1 + 2))
); // 6 12 -12 12
② 단항 산술 연산자
연산자 | 반환 | 부수효과 |
a++ | 값 그대로 | 1 증가 |
++a | 1 증가한 값 | 1 증가 |
a-- | 값 그대로 | 1 감소 |
--a | 1 감소한 값 | 1 감소 |
+a | 값 그대로 | 없음 |
-a | 양음을 반전한 값 | 없음 |
let x = 10;
// 값을 반환부터 하고 증가
console.log('1.', x++, x); // 1. 10 11
// 값을 증가부터 하고 반환
console.log('2.', ++x, x); // 2. 12 12
let x = 3;
let y = 4;
// 💡 부수효과가 일어나는 시점
console.log(x-- * --y, x, y); // 9 2 3
let x = 1;
console.log(
+x,
-x,
-(-x),
-(x++),
-x * -1
); // 1 -1 1 -1 2
💡 문자열을 숫자로 바꿈
console.log(
+'100',
-'100',
+'abc' // 숫자로 변환될 수 없는 문자열
); // 100 -100 NaN
let x = '100';
let y = '100';
console.log(x++, x); // 100 101
console.log(--y, y); // 99 99
숫자로 변환될 수 없는 문자열
// 첫 번째 값 주의 - 증가 이전에도 변환
let z = 'abc';
console.log(z++, z); // NaN NaN
(2) 할당 산술 연산자(부수효과 있음)
연산자 | 의미 |
x += y | x = x + y |
x -= y | x = x - y |
x *= y | x = x * y |
x /= y | x = x / y |
x %= y | x = x % y |
x **= y | x = x ** y |
let x = 3;
x += 2;
console.log(x); // 5
x -= 3;
console.log(x); // 2
x *= 12;
console.log(x); // 24
x /= 3;
console.log(x); // 8
x %= 5;
console.log(x); // 3
x **= 4;
console.log(x) // 81
let y = 25;
console.log(
y **= 0.5, // 할당된 결과 반환
y
); // 5 5
정리참조
https://www.yalco.kr/@javascript/2-5/
'JavaScript' 카테고리의 다른 글
그 외의 연산자들 (0) | 2023.03.05 |
---|---|
불리언(boolean)과 관련 연산자 (0) | 2023.03.05 |
문자열에 사용되는 연산자 (0) | 2023.03.03 |
문자열(string) - 텍스트 데이터 (0) | 2023.03.01 |
자료형과 정적 / 동적 타입 (0) | 2023.03.01 |