-
Section 2. 자바스크립트 숫자(Number)와 관련 연산자자바스크립트 2023. 3. 22. 17:55
자바스크립트에서는 정수와 실수의 자료형이 따로 없다.
숫자 자료형으로 표현되는 것들을 살펴보자.
1. 양과 음의 정수와 실수
// 자바스크립트에는 정수와 실수의 자료형이 따로 있지 않음 let integer = 100; let real = 1.234; let negative = -5.67; console.log( typeof integer, //number typeof real, //number typeof negative //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'
무한대는 number 자료형이고 양과 음이 있다는 사실을 알고 넘어가자. Infinity는 예약어이다.
3. 숫자가 아닌 것
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' // NaN은 양음이 없음 console.log(-NaN); //NaN
NaN은 특이하게 '숫자가 아닌것' 이라는 숫자값이다.
코드를 보면 숫자를 숫자가 아닌 것들로 계산을 한다. 이럴때 NaN이라는 값이 반환되게 된다. 그리고 NaN은 number 자료형이다. 즉, '숫자가 아닌것' 이라는 숫자값을 의미한다.
주어진 값이 NaN인지 여부 확인하는 방법
let x = 1 / 'abc'; console.log( x, //NaN x == NaN, //false x === NaN, //false isNaN(x), // 숫자가 아닐 시 true Number.isNaN(x) // 보다 엄격한 버전 );
위에서 보았듯이 x의 반환값은 NaN이다. 하지만 ==, ===을 사용해서 x값을 출력 했을때 false를 반환했다.
즉, NaN 여부는 ==, ===을 사용해서 알 수 없다.
따라서 NaN여부를 판단하려면 함수인 isNaN(), 또는 Number.isNaN()을 통해 판단해야 한다.
isNan과 Number.isNaN
숫자와 관련된 연산자에는 산술 연산자와 할당 산술 연산자가 있다.
1. 산술 연산자
a. 이항 산술 연산자. +, -, *, /, %, ** 등이 있다.
이상 산술 연산자는 셈의 결과를 반환하고 부수효과를 발생 시키지 않는다.
// 값 반환 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 // 제곱 ); // 부수효과 없음 console.log(y); //100
console.log( 4 * 1 + 2, //6 4 * (1 + 2), //12 4 * -(1 + 2), //-12 -(4 * -(1 + 2)) //12 );
괄호를 사용하면 연산의 순서를 보장할 수 있다.
b. 단항 산술 연산자
++이 변수 앞에 붙느냐 아니면 뒤에 붙느냐에 따라서 결과값이 많이 달라질 수 있으니 주의해서 보아야 한다.
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, //1 -x, //-1 -(-x), //1 -(x++), //-1 -x * -1 //2 );
언제 증가했는지만 파악하면 나머지는 단순 계산이다.
문자열을 숫자로 바꾸기
console.log( +'100', //100 -'100', //-100 +'abc' // 숫자로 변환될 수 없는 문자열 NaN ); let x = '100'; console.log(x++, x); //100 101 let y = '100'; console.log(--y, y); //99 99 // 숫자로 변환될 수 없는 문자열 // 첫 번째 값 주의 - 증가 이전에도 변환 let z = 'abc'; console.log(z++, z); //NaN NaN
문자열이 숫자 자료형으로 변환된 것을 볼 수 있다.
2. 할당 산술 연산자
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, // 할당된 결과 반환 5 y //5 );
부수효과가 일어나는 연산자이다. 하지만 원리는 동일하기 때문에 나머지는 단순 계산과 같다.
'자바스크립트' 카테고리의 다른 글
Section 2. 자바스크립트 연산자 마무리 (0) 2023.03.23 Section 2. 자바스크립트 불리언(boolean)과 관련 연산자 (0) 2023.03.22 Section 2. 자바스크립트 문자열에 사용되는 연산자 (0) 2023.03.22 Section 2. 자바스크립트 문자열(string) - 텍스트 데이터 (0) 2023.03.22 Section 2. 자바스크립트 자료형과 정적, 동적 타입 (0) 2023.03.21