티스토리 뷰
1. 주의 사항
앞서 자바스크립트는 Wrapper Object 를 통해서 literal 들이 메서드를 호출할 수 있게 해 준다고 언급한 바 있다.
그런데 Number 의 경우 주의를 기울여야 한다.
위의 첫 코드가 에러를 발생시킨다.
그 이유를 문제없이 실행된 10.1.toString(); 과 비교하면 짐작할 수 있다.
자바스크립트 파서가 ' . '(dot) 이 소숫점을 나타내는 역할인지 아니면 메서드 호출인지 구별해내지 못했던 것이다.
그렇다면 10 은 어떻게 toString 을 호출해야 할까? 아는 대로 세 가지 방법을 소개한다.
자바스크립트를 포함해서 대부분의 언어에서 수를 다룰 때,
let a=2.;
let b=.7;
처럼 허전한(?) 표현을 허용한다. 위의 10..toString() 은 10. 이 .toString() 으로 메서드를 호출하고 있다.
세 번째는 10 다음에 공백을 준 다음 메서드를 호출하는 것도 이유는 모르겠지만 원하는 결과를 얻는다.
개인적으로는 두 번째 (10).toString(); 을 추천한다.
2. Javascript 는 integer 와 floating point 를 퉁쳐서 number 로 취급한다.
자바스크립트는 미리 메모리의 크기를 지정해야 하는 C\C++ 계열 언어들처럼 수를 섬세하게 구분하지 않는다.
구분해야 할 일이 생기면 메서드 isInteger 를 사용한다.
3. 다른 진법 표기와 exponential notation
Integer는 0b, 0o, 0x 를 사용해서 각각 2진법, 8진법, 16진법 표기를 사용할 수 있다.
과학 과목 숙제에서 보았을 표현인 scientific notation 도 사용할 수 있다.
4. 연산
이항 연산 더하기, 빼기, 곱하기 ( +, - , * ) 는 말할 것이 없다.
나누기는 C\C++ 계열과는 달리 정수 나누기가 없다.
7/3 이 2 가 되기를 기대한 C 프로그래머라면...
문제가 발생할 것이다. 정수 몫을 구하려면
Math.floor(7/3);
parseInt(7/3);
정도를 쓸 수 있다. trunc 함수를 이용한다든지 다양한 방법이 있겠지만...
그리고 거듭제곱은 ** 를 이용할 수 있다.
실험해 본 범위 안에서는 Math.pow 와 완전히 같았다.
테스트의 일부만 소개하면,
실행 결과는 다음과 같다.
그 외에
복합 할당연산자 += , -=, *=, /= , %= 와
증감 연산자 ++, -- 등이 있는데 설명은 생략한다.
5. Infinity 와 Nan
number 의 두 이단아들이다.
1e200 처럼 너무 큰 수이거나 1 / 0 처럼 분모에 0 이 온 경우 에러가 아니라 Infinity 로 처리된다.
Nan 은 number 의 연산자가 적용되었지만 결과가 number 일 수 없는 경우에 발생하는 것 같다.
여기서 + 은 조금 미묘한데 다음 글에서 관련 내용을 정리한다.
'Programming Language > JavaScript [초급 -완결]' 카테고리의 다른 글
Quick JavaScript (6) Array 1 (0) | 2022.09.10 |
---|---|
Quick JavaScript (5) Type Conversion (0) | 2022.09.07 |
Quick JavaScript (3) Template Literal 과 Symbol (2) | 2022.09.01 |
Quick JavaScript (2) Reference (0) | 2022.09.01 |
Quick JavaScript (1) 데이터 타입과 변수 (0) | 2022.09.01 |
- Total
- Today
- Yesterday
- 다익스트라
- RUBY
- Aho-Corasick
- python3
- Shell Programming
- persistent segment tree
- Dijkstra
- dynamic programming
- script
- C++ big number
- number theory
- 정수론
- BOJ
- 백준
- bash
- Vim
- nearest common ancestor
- bash script
- fenwick tree
- Reference
- map
- segment tree
- JavaScript
- shell
- stack
- 세그먼트 트리
- max flow
- math font
- javascript array
- lazy propagation
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |