데이터 타입

김승훈·2020년 3월 5일
0

JavaScript

목록 보기
1/16

데이터 타입

  • 기본 타입(원시 타입)

    Number(숫자), String(문자열), boolean(논리값), undefined, null, symbol
    원시 타입 데이터는 데이터를 구성하는 가장 기본적인 요소로 불변 값 정의되어있다

    • 숫자(Number)

      자바스크립트는 타입이 없으므로 숫자를 모두 64비트 부동소수점으로 표현한다.
      특수한 값
      Infinity - 무한대 , 전역변수
      NaN - 부정값 not a number 전역변수
      Number.POSITIVE_INFINITY 플러스 무한대
      Number.NEGATIVE_INFINITY 마이너스 무한대

      var intNum = 10;
      var floatNum = 0.1;

      자바스크립트에의 숫자는 부동소숫점으로 처리함에 따라, 정확한 값이 출력되지 않음.

      var number1 = 0.1;
      var number2 = 0.2;
      console.log(number1 + number2); // 0.30000000000000004
      console.log(0.3 == (number1 + number2)); // false

    • 문자열(String)

      자바스크립의 문자열 길이가 16비트인 뮤니코드 문자(uft-16 코드)를 나열한 것으로 전 세계에서 사용하는 문자를 대부분 표현할 수 있다.

      ' '," "를 사용하여 표현.
      ""는 아무것도 포함하지 않는 문자열이라고 하여 빈 문자열이라고 한다.

      var singleQuoteStr = 'singQuoteStr';
      var doubleQuoteStr = "doubleQuoteStr";

      문자열은 문자열의 인덱스를 통해 접근할 수 있다.

      var str = 'test';
      console.log(string[0]);
      // t가 출력;
      
      var str = 'test';
      console.log(str[0], str[1], str[2], str[3]);
      
      str[0]='A';
      console.log(str);
      
      str = 'ssong';
      console.log(str);

      한번 정의된 문자열은 변경될 수 없다.

      재할당은 가능하지만, index값을 통한 접근변경은 불가능함.

      var str = 'test';
      str[0] = 'T';
      console.log(str) // test;

    • Boolean

      조건식이 참인지 거짓인지 표현하기 위해 사용하는 값입니다.

      true(1), false(0)
    • undefined

      값을 아직 할당하지 않은 변수의 값
      없는 객체의 프로러티를 읽으려고 시도 했을 때의 값
      없는 배열의 요소를 읽으려고 시도했을 때의 값
      아무것도 반환하지 않는 함수가 반환하는 값
      함수를 호출해을 때 전달받지 못한 인수의 값
      코드로 undefined 대입한 것이 아니라 자바스크립트 엔진이 변수를 undefined로 초기화 한것이다.!!!

      var emtyVar;

      변수명만 선언할 경우에, undefined

      undefined과 null은 둘다 빈값이지만, null은 사용자가 명시적으로 선언한 빈값이므로, 값이 들어있다고 볼수 있다.(null)

      undefined는 타입이자 값을 나타냄.
      typeof(undefined)

    • null

      아무것도 없음을 값으로 표현한 리터럴
      주로 프로그램에서 무언가 검색했지만 찾지 못했을 때 아무것도 없음을 전달하기 위한 값으로 사용된다.

      var nullVar = null;

      null의 경우 typeof의 결과가 null이 아닌 object이다.

      var nullVar = null;
      console.log(typeof(nullVar)) // object;
      console.log(nullVar == null) // true

  • 참조타입

    자바스크립트에서 숫자, 문자열, 불린값, null, undefined같은 기본타입을 제외한 모든 값은 객체다.

    객체는 단순히 '이름(key) : 값(value)' 형태의 프로퍼티들을 저장하는 컨테이너로서, 컴퓨터 과학 분야에서 해시(Hash)라는 자료구조와 상당히 유사하다.

    기본 타입은 하나값만을 가지는데 비해,

    참조타입은 객체 는 여러 개의 프로퍼티들을 포함할 수 있다.

    객체의 프로퍼티는 기본 타입의 값을 포함하거나 다른 객체를 가리킬 수 있다.

    참조하고 있는 원본의 값이 변경될 때, 참조타입의 값도 변경됨.

      var str = '텍스트'; // 원시값
      var arr_01 = [str]; // 원시값을 참조
      arr_01[0] = '텍스트2'; // 원시값을 참조함에 따라서, 원시값이 변경되진 않음.
      
      //------------------------------------------
      
      var arr_02 = [1, 2, 3, 4]; // 참조값
      var arr_03 = var_02;
      // arr_03은 var_02를 참조
      var03[0] = 5; 
      console.log(arr_02) // [5, 2, 3, 4] 참조에 의해 arr_02의 값이 변경되었음.

    프로퍼티의 성질에 따라 프로퍼티는 함수로 포함할 수 있다 이러한 프로퍼티를 메서드라 부른다.

    • 객체(Object)

      객체 안에 저장된 값은 바꿀 수 있습니다..
      객체 타입의 값을 변수에 대입하면 변수에는 그 객체에 대한 참조(메모리에서의 위치정보)가 할당된다.

      1. 객체 생성 방법

        //new Object() 생성자 함수 이용
        
        var foo = new Object();
        
        // 객체 프로퍼티 생성
        Human.name = 'foo ';
        Human.sex = 'female';
        
        //객체 리터럴 방식
        var foo2 = {
          name: 'foo ',
          sex: 'male'
        };
        
        var foo3 = function(name, sex) {
            this.name = name;
            this.sex = sex;
        }
        
        var foo3 = new Human3('foo ', 'female');
        
        console.log(foo);
        console.log(foo2);
        console.log(foo3);
      2. 객체 프로퍼티 읽기/쓰기/갱신

        var foo = {
        	name: 'foo',
        	age : 20
        } //리터럴 방식
        
        // 객체 프로퍼티 읽기 
        console.log(foo.name);
        console.log(foo['name']);
        
        // 갱신
        foo.age = 30;
        console.log(foo.age);
        console.log(foo['age']);
        
        //생성
        foo.job = 'student';
        
        //대괄호 표기법만 사용해야 할 경우
        //접근하고자 하는 프로퍼티가 예약어나 연산자가 있는 표현식일 경우
        foo['full-name'] = 'foo bar';
        console.log(foo['full-name']);
        console.log(foo.full-name); //NaN
    • 배열(Array)

        var arr = [];

      배열의 선언 방법은 "[]"

      배열 안의 값을 가져오려면 인덱스(Index)를 이용함.
      Index는 0부터 시작함.

      배열이 생성될때 length 메소드가 함께 생성됨.
      length는 1부터 시작함.

        var arr = [1, 2, 3, 4]
        arr[0] // 1;
        arr.length // 4;
        
        arr.length = 7;
        console.log(arr); // arr = [1, 2, 3, 4, empty, empty x 2];

      배열 선언시 length를 먼저 선언할 수 있음 그럴경우, 배열의 길이에 따라서 먼저 생성이 됨. 빈값은 empty값이 출력됨.

      생성자 함수를 이용해서 배열을 만들 경우, new Array(3)과 같이 미리 length를 지정할 수 있다.

        var arr = new Array(3); // arr.length = 3; , arr = [empty x 5];

      배열도 객체이므로, 동적으로 프로퍼티를 생성할 수 있다.

        var arr = [1, 2, 3, 4,]
        arr.string = 'test'
        console.log(arr); // arr = [1, 2, 3, 4, string];
        
        arr[4] = 6;
        console.log(arr.length); // 5

      arr의 length 프로퍼티는 배열의 가장 큰 인덱스가 변했을 경우에만 변경됨.

      배열이 아니지만, length값이 있는 경우 유사배열 객체라고 한다.

0개의 댓글