본문 바로가기
javascript

[자바스크립트] 자료형과 변수

by jinbro 2017. 3. 8.

[기본 자료형(primitive type)]

1) Boolean : true / false 논리 요소를 나타냄, 숫자 1은 true, 숫자 0, 빈문자열, null, undefined는 false를 뜻함
    

2) null : 의도적으로 값을 제거하는 것, 변수에 참조 정보(값을 참조할 메모리 주소값)가 없음을 명시할 때 사용함
    주의해야할 점 : null이 주어진 변수를 typeof()(변수의 자료형을 판별하는 함수) 파라미터로 전달하면 object로 반환함 
     
    
     null 타입의 변수인지 아닌지 확인하기위해서는 일치연산자(===)를 사용해야함 
     

3) undefined : 값을 할당하지않은 변수, 선언만 하고 할당된 값이 없거나, 존재하지 않는 Object의 프로퍼티에 접근할 경우 반환함 
    
    
     null은 null 자체가 값임(아무런 값을 갖지 않는다는 것에 대한 값), undefined는 아예 값을 가지고 있지 않다는 것    
    

4) Number : java는 int, long, short, float, double 등 숫자 관련 다양한 자료형으로 구분하지만, js는 Number 하나로 구분함
    단, + 와 - 그리고 Infinity(무한대), NaN(not a number, 숫자가 아님)를 구분함
    
     변수 n이 숫자가 아닌데 자료형은 number로 나옴, NaN은 number로 분류 되는데, 구분하기위해 isNaN() 함수를 사용함
     isNaN() : 출력되는 값이 숫자 표현일 경우("123"도 false, 숫자 표현임) false, 아닐 경우 true 리턴하는 함수
    
     
5) String : 텍스트 데이터를 나타낼 때 사용하는 자료형, 문자열은 '(작은따옴표) 또는 "(큰따옴표) 안에 텍스트를 넣어 생성함
    
    문자열은 말그대로 문자의 배열로, 배열 인덱스로 문자열의 특정 문자에 접근 가능함
    문자열을 다루는 다양한 함수가 있는데, 앞으로 포스팅할 것임

    주의해야할 점 : 문자열이 생성되면 인덱스로 문자열 내 특정 문자에 접근하여 변경할 수 없음, 새 문자열 할당은 가능
    
     
[객체(Object) 자료형]
1) 객체는 데이터(속성)와 그 데이터와 관련된 동작(함수)을 모두 포함할 수 있는 개념적 존재
2) 자바스크립트는 객체 기반 스크립트 언어이며, 자바스크립트를 이루고 있는 거의 모든 것은 객체임(기본 자료형을 제외한....)
3) 자바스크립트 코어의 기본 객체 Object(최상위), Array, Math 등도 객체형이다.
4) 함수(function)를 이용하는 방법과 객체 리터럴로 인스턴화하는 방법을 구분할 것
객체 : 인스턴스의 설계도? 하나의 묶음? 
인스턴스 : 객체를 실체화한 것

    - 함수를 이용한 객체(Object) 생성 및 인스턴스화
1
2
3
4
5
6
7
8
function Person(){
    this.eye = 2;
    this.nose = 1;
 
    this.walk = function(){
        console.log("walking.....!");
    }
}

var park = new Person();

cs
 
    - 객체 리터럴 표기방법과 인스턴스화
1
2
3
4
5
6
7
8
9
var person = {
    eye: 2,
    nose: 1,
    walk: function(){
        console.log("walking...!");
    }
}

/* 이미 인스턴스가 만들어져있음 */
 
cs

[변수]
1) 값을 유지해야할 때 변수를 사용함
2) 식별자 역할
3) 저장, 조회, 조작(변경)할 때 사용되며(변수를 이용한 연산), 다른 개발자가 변수의 목적을 이해하기쉽게 변수명을 지어야함
4) 변수를 선언할 때에는 var 키워드를 사용함. 값을 할당 할 때에는 = (등호) 연산자를 사용함
5) 변수 선언만 해두고 아무런 값을 할당하지 않으면 undefined가 할당됨(undefined 변수에 접근하면 ReferenceError 예외가 발생함)
6) 변수는 값을 저장하는 것이 아니라, 메모리(byte단위)에 값을 저장하고 변수는 값의 메모리 주소를 저장해 참조하는 형태임
7) c나 java 같은 c-family 언어로 변수 선언 시 변수의 타입(자료형)과 자료형에 맞는 값을 지정해줘야함 
   자바스크립트는 필요없음, 자동으로 자료형이 결정됨. 이를 동적타이핑(Dynamic Typing)이라 함
8) 자바스크립트 변수는 Function-level scope임 
     - c-family 언어의 Block-level scope : ECMAScript6에서 도입된 let 키워드를 사용하면 현 스코프도 사용 가능함 
       코드 블럭( {....} ) 내에서 선언된 변수는 코드 블럭 내에서만 유효하며, 코드 블럭 외부에서는 참조할 수 없음

     - 자바스크립트 Function-level scope
       함수 내에서 선언된 변수는 함수 내에서만 유효하며, 함수 외부에서는 참조할 수 없음(블록 레벨은 상관 x, 변수 어디서나 사용됨)
       

[참고자료]
1) [poiemaweb] 자바스크립트 자료형과 변수 : http://poiemaweb.com/js-data-type-variable

2) [XE] 자바스크립트 내장 객체의 종류 : http://www.silverwolf.co.kr/javascript/5406


댓글