데이터 타입

  • 기본 타입(원시 타입)

    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
      
      1 / 0 - // Infinity
        1 / 0; //-Infinity
      nAn = "not a number" / 2; // NaN

    • 문자열(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값이 있는 경우 유사배열 객체라고 한다.

Last updated