데이터 타입
프로그램 언어로 표현할 수 있고 조작할 수 있는 값의 종류 |
1. 숫자
자바스크립트는 모든 숫자는 실수로 표현된다. 숫자를 IEEE754표준에 의해 정의되는 64비트 실수 형식을 사용하여 표현한다. 범위 : ±1.7976931348623157 X 10^308 ~ ±5 X 10^-324 자바스크립트 프로그램 내에 바로 나타날 때 이를 숫자 리터럴 이라고 한다. |
1.1 정수 리터럴
10 진수 정수는 숫자 시퀀스(=연속된 숫자나 문자를 의미) 형태로 작성된다. 0 3 1000000 범위 : -9007199254740992(-2^53)에서 9007199254740992(2^53) |
1.2 16진수와 8진수
자바스크립트는 16진수 값을 인식한다. '0x' 나 '0X'로 시작한다. 16진수 숫자 : 0 ~ 9까지는 동일하며, a(또는 A): 10, b: 11, c: 12, c: 13, d:14, e: 15, f: 16 으로 표현된다. Oxff // 15*16 + 15 = 255(10진수 변환) 8진수 숫자 : 0 ~ 7까지 숫자로만 이루어져 있다. 0377 // 3*64 + 7*8 + 7 = 255(10진수 변환) 자바스크립트 구현에 따라서 8진수 리터럴을 지원할 수도 안할 수도 있다. 0으로 시작하는 리터럴을 8진수 값으로 인식할지 10진수 값으로 인식할지 모른다. 그러므로 0으로 시작하는 정수 리터럴은 절대로 사용하지 말라. |
1.3 부동소수점 리터럴
부동소수점 리터럴은 소수점을 가질 수 있으며, 전통적인 문법으로 표현된다. 실수 : 정수부분 + 소수점, 소수점 이하 부분 지수표기법 : 실수에 이어 문자 e(혹은 E)가 따라 나오고, 그 뒤에 선택적으로 플러스 혹은 마이너스 기호가 나타나고 그 뒤에 선택적으로 플러스 혹은 마이너스 기호가 나타나고 마지막으로 정수 지수 값이 따라 나온다. [digits][.digits][(E|e)[(+|-)]digits] 3.14 2345.89 .333333333 6.02e23 // 6.02 X 10^23 |
1.4 숫자 조작
+ - ×÷ 사칙연산 이외에도 Math라는 단일 객체의 프로퍼티를 이용해서 연산이 가능하다. var sine_of_x = Math.sin(x); var hypot = Math.sqrt(x*x + y*y); |
1.5 숫자 변환
숫자 → 문자, 문자 → 숫자 로 변환할 수 있다. |
1.6 특수한 숫자 값
부동수수점 값으로 표현가능한 가장 큰 유한 수보다 더 큰 값은 무한대를 나타내는 Infinity로 표현한다. 양의 무한대 : Infinity 음의 무한대 : - Infinity NaN : Not a Number ( 23/0 처럼 수리 연산이 정의되지 않은 결과 ) 관련 함수 isNaN : Is Not a Number - 숫자를 판별하는 함수 isFinite() : 양,음 무한대 여부를 검사 |
2. 문자열
Unicode 문자, 숫자, 문장부호들의 시퀀스로 텍스트를 표현한다. |
3.1 문자열 리터럴
0개 또는 하나 이상의 Unicode 문자들이 작은 따옴표 혹은 큰따옴표(' 혹은 ")로 둘러싸인 시퀀스다. 한 줄을 넘지 말아야 한다. 줄바꿈을 포함하고 싶다면 \n을 사용하라. 문자열 내에 cant's, O'Reilly's 같은 영어 축약형을 표현하기 위해서는 '을 \(역슬래쉬)를 사용해서 표현해야 한다. |
3.2 문자열 리터럴 내 이스케이프 시퀀스
역슬래쉬(\)는 작은 따옴표 문자를 일반적인 해석 방식에서 벗어나 특수한 방식으로 해석하게 만든다. \' : '(작은따옴표) 문자를 문자열 내에 표현할 수 있도록 한다. \u03c0 : 문자 파이(π) 를 타나낸다. |
3.3 문자열 조작
"" + "", .charAt, substring, indexOf, .length 등으로 문자열을 조작, 정보 조회를 할 수 있다. |
3.4 숫자를 문자열로 변환하기
var s = 100 + " chomae"; // 숫자 + 문자 var s = 100.toString(); // 숫자 뒤에 .toString() 메서드를 이용하면 문자열로 변환할 수 있다. var n = 123456.789; n.toFixed(0); // "1234567" n.toFixed(2); // "123456.79" n.toExponential(1); // "1.2e+5" n.toPrecision(4); // "1.235e+5" |
3.5 문자열을 숫자로 변환하기
var product = "21" * "2"; // 두 문자열 곱은 숫자 42가 된다. var number = Number(string_value); // Number 생성자를 통해 변환한다. parseInt(), parseFloat()를 통해 변환할 수 있다. |
3.6 불리언 값
true, false 리터럴로 표현된다. if (a==4) b=b+1; else a=a+1; |
3.7 불리언 타입 변환
1(true), 0(false) "true"(true), "false"(false) 0, NaN(false) 그외 true |
4. 함수
자바스크립트 프로그램에 정의되어 있거나 자바스크립트 구현에 미리 정의되어 있는 실행 가능한 코드 한번 정의하면 여러번 실행될 수 있다. 전달인자(argument)나 매개변수(parameter)를 넘겨받을 수 있으며, 게산 결과를 타나내는 값을 반환할 수 있다. 자바스크립트에는 여러 많은 함수가 미리 정의 되어 있다. - Math.sin(), String.substring() ... |
4.1 함수 리터럴
function 키워드, 함수 이름(생략할수 있다.), 괄호로 둘러싸인 함수 전달인자목록, 중괄호로 구성된다. function square(x) { return x*x; } 람다함수 - 함수명이 없는 함수 var square = function(x) { return x*x; }; Function() 생성자를 통한 함수 생성 var square = new Function("x", "return x*x;"); |
5. 객체
이름 붙은 값들의 모음이다. 다른 언어의 객체 모양과 비슷하지만, 더 유연한 객체 개념을 제공한다. |
5.1 객체 생성
생성자를 통한 생성방법으로 객체를 생성할 수 있다. var o = new Object(); var o = new Date(); |
5.2 객체 리터럴
콜론으로 구별되는 프로퍼티 이름/값 쌍들이 다시 쉼표로 분리된 목록이다. JSON 과 동일하다. var point = { x:2.3, y:-1 }; |
5.3 객체 변환
null이 아닌 객체가 불리언 문맥에서 사용되면 true 로 변환된다. |
6. 배열
객체처럼 데이터 값들의 모음이다. 0부터 시작하는 배열 인덱스가 있는 것이 특징이다. |
6.1 배열 생성
Array() 생성자를 통해 생성할 수 있다. var a = new Arrau(); a[0] = 1.2; a[1] = "javascript"; a[2] = { x: 1, y: 3 }; |
6.2 배열 리터럴
대괄호를 통해 배열을 생성할 수 있다. var a = [1.2, "javascript", {x:1, y:}]; |
7. null
아무런 값도 나타내지 않는 특수한 값 숫자 문맥에서 사용하면 0 로 변환 문자열 문맥에서 사용하면 "null" 로 변환 |
8. undefined
선언은 되었지만 값이 할당된 적이 없는 변수에 접근하거나 존재하지 않는 객체 프로퍼티에 접근할 경우 반환되는 값 불리언 문맥에서 사용되면 false 변환 숫자 문맥에서 사용되면 NaN 변환 문자열 문맥에서 사용되면 "undefined" 변환 |
9. Date 객체
날짜와 시간을 표현하고 그 값을 조작하는데 사용할 수 있는 객체 |
10. 정규 표현식
텍스트 패턴을 기술하는데 사용할 수 있는 풍부하고도 강력함 문법을 제공한다. /[0-9]/g |
11. Error 객체
try ~ cath 구문에서 Error 객체를 사용한다. EvalError, RangeError |
13. 기본 데이터 타입 래퍼 객체
기본 데이터 타입 값과 동일한 값을 담고 있지만 데이터 조작을 위한 프로퍼티와 메서드도 가지고 있다. 자바스크립트는 유동적으로 한 타입의 값을 다른 타입의 갑으로 변환한다. 문자열에 대해 indexOf 함수를 사용하려고 할 경우 자동으로 String 래퍼 클래스를 생성하여 처리한다. var s = "hello world"; var x = new String("hello world"); typeof 를 이용하면 객체인지 문자열인지 알 수 있다. |
14. 객체에서 기본 타입으로 변환
대부분 객체는 Object의 기본 valueOf() 메서드를 상속받는다. 배열에서 toString() 을 사용할 경우 각 배열 원소를 문자열로 변환하고 배열 원소 사이에 쉼표를 삽입하여 이어 붙인 문자열을 결과로 반환한다. |
15. 값에 의한 vs. 참조에 의한
by value : 값이 복사된다. 복사된 변수를 수정해도 원본 변수는 수정되지 않는다. by reference : 주소가 복사된다. 복사된 변수를 수정하면 원본 변수도 동일한 값으로 수정된다. (같은 주소를 참조하기 때문이다.) |
15.1 기본 타입과 참조 타입
예제 실행 |
15.2 문자열 복사와 전달
문자열은 특이하게도 기본타입이다. 문자열은 set 프로퍼티가 없다. 그래서 참조타입보단 기본타입에 가깝다. 값을 복사하여, 조작이 가능할 수 있다. |
15.3 문자열 비교
var s1 = "hello"; var s2 = "hell" + "o"; if ( s1 == s2 ) alert('chomae'); s1, s2 값이 동일하기 때문에 true 를 반환하며, alert 가 실행된다. |
15.4 값에 의한 vs. 참조에 의한 : 요약
- 책 참조
'프로그래밍 세상 > 자바스크립트 이야기' 카테고리의 다른 글
제 10장. 모듈과 네임스페이스 (0) | 2012.02.13 |
---|---|
제 9장. 클래스, 생성자, 프로토타입 (0) | 2012.02.13 |
제 8장. 함수 (0) | 2012.01.30 |
제 7장. 객체와 배열 (0) | 2012.01.30 |
제 6장. 문장 (0) | 2012.01.21 |
제 5장. 표현식과 연산자 (0) | 2012.01.21 |
제 4장. 변수 (0) | 2012.01.15 |
제 2장 어휘 구조 (0) | 2012.01.08 |
제 1장 자바스크립트 소개 (0) | 2012.01.08 |
자바스크립트 시작하기 전에... (0) | 2012.01.02 |