• Types in Javascript (es5기준)

    • Boolean
    • Number
    • String
    • Null 타입 - 값 : null
    • Undefined 타입 - 값 : undefined
    • Object
  • 성격에 따라 크게 두 가지 종류로 나뉜다.

    • Primitive Value (원시값)

      • Number
      • String
      • Null
      • Undefined
    • Reference Value (참조값)

      • Object (function, array, arguments … )

        1
        2
        3
        4
        5
        6
        7
        var list1 = [1,2,3];
        var list2 = [1,2,3];
        list1 === list2; // false (서로 다른 위치)

        var list3 = [1,2,3];
        var list4 = list3;
        list3 === list4; // true (같은 주소 가리킴)
        1
        2
        3
        4
        5
        6
        7
        var obj1 = { num : 1};
        var obj2 = obj1;
        var obj3 = obj2;
        var obj4 = obj3;
        var obj5 = obj4;
        obj1.num++;
        console.log(obj5); //2
        1
        2
        3
        4
        5
        6
        7
        var arr1 = [1,2,3];
        var arr2 = arr1;
        var arr3 = arr2;
        var arr4 = arr3;
        var arr5 = arr4;
        arr1.push(4);
        console.log(arr5);//[1,2,3,4]
        1
        2
        3
        4
        5
        6
        7
        8
        9
        var child1 = {age : 3};
        var child2 = {age : 5};
        var mother = {
        age : 55,
        children : [child1, child2]
        };
        child1.age++;
        child2.age++;
        console.log(mother.children); //[{age : 4},{age : 6}];
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        function updateAge(){
        this.age++;
        }
        var son = {age : 3, growUp : updateAge};
        var daughter = {age : 38, growUp : UpdateAge, children : [son, daughter]};
        var mother = {age : 38, growUp : updateAge, children : [son, daugther]};
        var father = {age : 38, growUp : updateAge, wife : mother, children : [son, daughter]};

        if(father.age === mother.age){
        console.log('동갑');
        //동갑 (father.age의 값과 mother.age의 값이 primitive로, 값만 같다면 같은 것)
        }

        if(father.children === mother.children){
        console.log('부부');
        //안 뜬다 (내용물이 같아도 father.children에서 배열생성하고, mother.children에서 배열생성)
        }

        if(father.growUp === son.growUp){
        console.log('성장가능');
        //성장가능 (함수의 위치를 넣어놓은거를 growUp에 넣어둠)
        }
        1
        2
        3
        4
        5
        var array = [1,2,3];
        var arry2 = array.slice();
        array.splice(0,1);
        console.log(array2);
        // [1,2,3] (array2는 array를 복사한 것일 뿐이고 array를 건드린거기때문에 array2에는 영향없음)
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        var child1 = {
        age : 111
        };
        var child2 = {
        age : 222
        };
        var array = [child1, child2];
        var array2 = array.slice();
        var child3 = {
        age : 333
        };
        array.push(child3);
        console.log(array2[0] === array[0]); //true