자바스크립트 데이터 타입과 연산자
자바스크립트의 값들은 크게 기본 타입과 참조 타입으로 나뉜다.
자바스크립트 기본 타입
숫자
자바스크립트에서는 모든 숫자를 64비트 부동 소수점 형태로 저장. 나누기 연산에 주의해야함 . 소수 부분을 버린 정수 부분만을 구하고 싶다면 Math.floor() 메서드를 사용하면 된다.
문자열
자바스크립트에서는 문자하나만을 위한 char형과 같은 타입은 존재하지 않으므로 길이가 1인 문자열 형태로 문자를 표현한다.
한번 정의 된 문자열은 변하지 않는다.
var str = "test"
str[0] = "T" ;
console.log(str) // test 출력
예제와 같이 한번 정의된 문자열은 읽기만 가능하지 수정은 불가능하다.
불린 값
자바스크립트는 true와 false값을 나타내는 불린 타입을 가진다.
null과 undefined
이 두 타입은 모두 값이 비어있음을 나타낸다. 자바스크립트 환경 내에서 기본적으로 값이 할당되지 않는 변수는 undefined 타입이며 그 값 역시 undefined이다.
var a ; // undefined 타입
console.log(a) // undefined출력.
null 타입의 변수는 개발자가 명시적으로 값이 비어있음을 나타내는 데 사용한다.
여기서 주의할 점은 null타입의 변수를 typeof로 확인해보면 object 로 출력이 된다. 때문에 값이 null인지 확인할 때에는 typeof 연산자를 사용하면 안되고
일치연산자(===)를 사용해서 값을 직접 확인해야 한다.
자바스크립트 참조 타입(객체)
자바스크립트에서 객체는 기본타입을 제외한 모든 값이다. 객체는 단순히 " 이름 : 값 " 형태의 프로퍼티들을 저장하는 컨테이너이다.
객체 생성
자바스크립트에서 객체를 생성하는 방법은 크게 세 가지가 있다.
1. Object() 객체 생성자 함수를 이용하는 방법
2. 객체 리터럴 ( 표기법 ) 을 이용하는 방법
3. 생성자 함수를 이용하는 방법
Object() 생성자 함수 이용
var obj = new Object() ;
객체 리터럴 방식 이용
var obj = {
name : 'troh',
age : 27
};
생성자 함수 이용
객체 프로퍼티 읽기/쓰기/갱신
for in 문과 객체 프로퍼티 출력
객체 프로퍼티 삭제
참조 타입의 특성
프로토타입
자바스크립트의 모든 객체는 자신의 부모 역할을 하는 객체와 연결되어 있다. 이러한 부모 객체를 프로토타입 객체 or 프로토타입 이라고한다.
ECMAScript 명세서에는 자바스크립트의 모든 객체는 자신의 프로토타입을 가리키는[[prototype]]라는 숨겨진 프로퍼티를 가진다고 설명하고 있는데 크롬 브라우저에서는 __proto__가 바로 [[prototype]]프로퍼티를 의미한다.
배열
배열의 생성 및 요소생성
배열과 객체
그렇다면 배열과 객체의 차이점은 무엇일까? 배열과 객체의 차이점은 크게 2가지가 있다.
1.length 프로퍼티의 존재 유무
일반적인 객체는 length 프로퍼티가 존재하지 않지만 모든 배열은 length프로퍼티를 가지고 있다. 객체에다가 length프로퍼티를 추가한다면 어떻게 될까? 이처럼 length 프로퍼티를 가지는 객체를 유사배열객체라고 한다.
2. 프로토타입
객체의 프로토타입은 Object 를 가리키지만 배열의 프로토타입은 Array를 가리킨다. 그러므로 유사배열객체 일지라도 프로토타입이 다르므로 배열의 메소드를 이용할 수 없다. 뒤에 나올 apply 와 call을 이용하면 유사배열객체에서도 배열의 메소드를 이용할 수 있다.
배열의 프로퍼티 열거
배열도 프로퍼티를 추가할 수 있다. 객체의 프로퍼티 열거는 for in 문을 이용하여 열거 할 수 있다고 했는데 배열도 for in문을 이용하여 프로퍼티를 열거하면 원치않는 프로퍼티들도 함께 노출이 된다. 따라서 배열의 경우는 for문을 이용하여 프로퍼티를 열거해야 한다
var arr = [1,2,3];
for(int i=0; i<arr.length ; i++)
console.log(arr[i]);
배열 요소 삭제
동등(==)연산자와 일치(===)연산자
동등 연산자는 비교하려는 피연산자의 타입이 다를 경우에 타입 변환을 거친 후 비교하는 반면에 , 일치연산자는 피연산자의 타입이 다를 경우에 타입을 변경하지 않고 비교한다.
대부분의 자바스크립트 코딩가이드에서는 일치연산자를 사용하도록 권장하고 있다.
'개발서적 > 인사이드자바스크립트' 카테고리의 다른 글
CHAPTER 05. 실행 컨텍스트와 클로저 (0) | 2017.02.04 |
---|---|
CHAPTER 04. 함수와 프로토타입 체이닝 (0) | 2017.02.04 |
CHAPTER 02. 자바스크립트 개발 환경 (0) | 2017.01.27 |
CHAPTER 01. 자바스크립트 기본개요 (0) | 2017.01.27 |