이력
- 2021.10.08 포스팅
- 2021.11.26 사소한 수정
모든 내용을 상세히 담으려 하지 않았습니다.
제가 모르는 부분이나, “이런 것도 있었어?” 하는 부분, 중요하다고 생각되는 부분,
다시 한번 되새기고 싶은 부분만 기록했습니다.
읽어주셔서 감사합니다.
10.1 개요#
- 글로벌 오브젝트는 자바스크립트가 만들며 개발자 프로그램으로 만들 수 없습니다. 오브젝트의 프로퍼티를 사용하려면 프로퍼티 앞에 오브젝트를 지정해야 합니다. 하지만 글로벌 오브젝트는 하나라는 환경으로 인해 오브젝트를 지정하지 않고 프로퍼티를 사용합니다.
- 글로벌 오브젝트에 값, 함수, 생성자, Math, JSON 프로퍼티가 있으며 함수 프로퍼티를 글로벌 함수라고 부릅니다. 글로벌 함수를 전역 함수, 내장 함수라고 부르기도 합니다. 값 프로퍼티를 글로벌 프로퍼티라고 합니다.,
10.2 프로퍼티 리스트#
- 생성자 프로퍼티: 글로벌 오브젝트의 생성자 프로퍼티는 Array, Boolean, Date, Error(다양한 에러들 포함), Function, Number, Object, String
- new Number()에서 Number가 생성자 프로퍼티이다. new Number()가 실행되면 빌트인 Number 오브젝트의 prototype에 연결된 프로퍼티로 새로운 오브젝트를 생성하여 반환합니다.
10.3 글로벌 프로퍼티#
프로퍼티 이름 | 값 |
---|
NaN | Not-a-Number |
Infinity | 무한대 값 |
undefined | undefined |
- 글로벌 프로퍼티는 외부 프로그램으로 값을 변경할 수 없으며, for-in 루프로 열겨할 수도 없다. delete로 삭제할수도 없다. 오브젝트를 지정하지 않고도 프로퍼티에 접근할 수 있다.
10.4 NaN 여부, isNaN()#
- 파라미터에 값을 지정하지 않으면 undefined로 인식되며, undefined는 숫자 값으로 변환하면 NaN이 되어 true가 된다.
- null은 숫자 값 0으로 변환되어 false가 된다.
- 아래의 코드에서 NaN === NaN 이 false가 나오는 것은 ES3 규격의 버그이다.
1
2
3
| js.log(NaN === NaN); // false
js.log(isNaN(NaN)); // true
js.log(NaN !== NaN); // true, ES5 스펙에서 추천하는 NaN 체크 방식이다.
|
- Number 오브젝트가 숫자를 위한 오브젝트이므로 숫자를 비교하려면 Number 오브젝트의 메소드를 사용하는 것이 정상적인 설계이다. 이 관점에서 보면 글로벌 오브젝트에 isNaN 함수가 있는 것은 설계상의 실수이다. ES6에서 Number.isNaN() 함수가 추가되었다.
10.5 무한대 값 여부, isFinite()#
10.6 정수값 변환, parseInt()#
- 특징은 정수값으로 변환하여 반환한다는 것이다.
1
2
3
4
5
6
7
8
9
10
11
12
| 첫 번째 파라미터: 정수값 변환
1. 파라미터 값을 문자열로 변환하여 내부 처리를 합니다.
2. 문자열의 처음부터 하나씩 오른쪽으로 이동하면서 반환합니다.
3. 첫 번째 자리가 음수 부호이면 다음 문자부터 비교합니다.
4. 숫자로 변환할 수 없는 문자를 만나면 그때까지 변환한 값을 반환합니다.
- 숫자가 아닌 값이 있으면 일부만 변환되어 반홥된다.
5. NaN 처리를 하지 않습니다.
- 정상적으로 변환된 것으로 생각할 수 있으므로 주의가 필요하다
6. 문자열 앞과 뒤의 화이트 스페이스는 변환 대상에서 제외시킨다.
- 화이트 스페이스를 무시하고 값만 변환한다.
7. 문자열을 숫자 값으로 변환하고 사인 부호로 곱한 값을 반환한다.
|
1
2
3
4
5
6
7
8
9
10
| 두 번째 파라미터: 진수 변환
1. 두 번쨰 파라미터를 작성하지 않거나 0을 작성하면 10진수로 변환합니다.
2. 2이면 2진수로, 10이면 10진수로, 16이면 16진수로 변환합니다.
3. 2보다 작거나 36보다 크면 NaN을 반환합니다.
- 단, 0은 10진수를 적용한다.
4. 첫 번째 파라미터의 처음 두 개의 문자가 0x 또는 0X이면 16진수로 변환합니다.
5. 첫 번째 파라미터의 첫 문자가 0이면 8진수로 변환합니다.
- ES3 부터 8진수 사용을 권하지 않으며 정상적으로 동작하지 않을 수 있습니다.
- 따라서 확실하게 변환하기 위해 두 번째 파라미터에 8 지정을 권합니다.
|
10.7 실수값 변환, parseFloat()#
- 자바스크립트는 부동 소수점으로 값을 표현하므로 실수로 변환하는 것은 의미가 없다.
1
2
3
4
5
6
7
8
9
10
| 실수값 변환 기준
1. 파라미터 값을 문자열로 변환하여 내부 처리를 합니다.
2. 문자열의 처음부너 하나씩 오른쪽으로 이동하면서 변환합니다.
3. 문자열 앞과 뒤의 화이트 스페이스는 처리 대상에서 제외시킵니다.
- 화이트 스페이스를 무시하고 값만 변환합니다.
4. 첫 번째 문자가 숫자 값으로 변화되지 않으면 NaN을 반환합니다.
- 파라미터에 값을 작성하지 않거나 빈 문자열을 작성하면 NaN이 반환된다.
5. 양수/음수 부호, 숫자, 소수점, 지수 이외의 문자를 만나면 그때까지 변환한 값을 반환합니다.
6. 문자열을 숫자 값으로 변환하고 사인 부호로 곱한 값을 반환합니다.
|
10.8 문자열 실행, eval()#
- 반환하면 반환된 값을 반환하고 값을 반환하지 않으면 undefined를 반환합니다.
10.9 URI 인코딩, encodeURI()#
- 아래의 문자를 제외한 문자를 UTF-8로 % 16진수 16진수로 형태로 변환한다.
1
| A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
|
10.10 URI 확장 인코딩, encodeURIComponent()#
- 아래의 문자를 제외한 문자를 UTF-8로 % 16진수 16진수로 형태로 변환한다.
1
| A-Z a-z 0-9 - _ . ! ~ * ' ( )
|
10.11 URI 디코딩 (decodeURI() )#
10.12 URI 확장 디코딩 (decodeURIComponent() )#