ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바스크립트 1. 변수
    SYNC 기술면접 준비 2023. 11. 3. 17:49

    <참고 영상> https://www.youtube.com/watch?v=__Zz17_5FRU

     

    변수 : 프로그래밍언어에서 우리가 처리해야 되는 데이터를 담을 수 있도록 도와준다.

    데이터를 담고 있고 변수를 통해서 데이터에 접근, 업데이트 가능

     

    < LET >

    자바스크립트에서 변수 정의 → let

    let number = 2;
    let num = '2';

    가장 작은 단위의 데이터들을 primitive 데이터 타입(문자열, 숫자 가능)

    가장 작은 단위의 아이들 → number, string, boolean, null, undefined

    변수 이름이 어떤것 인가에 따라 **변수에는 ~ 같은 아이들이 있구나를 유추하기 쉬워진다.

     

    변수를 선언하면 메모리에 number라는 공간이 생기고 그 변수안에 숫자 2 라는 데이터가 들어가게 된다.

     

    let number = 2;
    let number2 = number;

    또 다른 공간에 'number2' 만을 위한 공간이 생긴다.

    변수를 선언하면 그 변수를 위한 공간이 생긴다.

    거기에 'number'변수의 데이터 숫자 2가 'number 2'에 복사된다.

    따라서 'number2' 공간에 숫자 2가들어간다.

    number2 = 3;
    # number2에 숫자 2 대신 3을 업데이트 했음

    number은 그대로 2

    number2는 숫자 2 대신에 3을 업데이트 되었음

     

    -----------------------------------------------------------------------

     

    < object >

    데이터 타입에  'number, string, boolean, null, undefined' 를 제외한 아이들은 모두 object

    object : 최소한 한 두가지의 다양한, 큰 데이터를 한군데 다 묶어놓은  것 

    ex) 배열, 리스트, 함수 등 

     

    # object
    let obj = {
        name : 'ellie',
        age : 5,
    };
    # 각각 키마다 메모리가 할당된다.
    # 'name'이라는 변수에 'ellie', 'age'라는 변수에 숫자 5
    # 이 둘을 묶어서 어떠한 주소로 나타내고
    # 그 주소값만 obj라는 변수에 할당된다.

     > 각각 키(name, age)마다 메모리가 할당된다.;

    'name'이라는 변수에 'ellie',

    'age'라는 변수에 숫자 5

    이 둘을 묶어서 집 주소처럼 어떠한 주소값이 나타나게 되고 ex) '123'

    이 주소값'123'만 obj라는 변수에 할당된다

    obj.name;

    > obj가 가리키고 있는 (주소)곳에 'name'이라는 변수의 값을 찾고 있다 > ellie가 출력된다.

     

    let obj2 = obj;

    obj가 가지고 있는 주소값 '123' 복사되어 obj2에 들어간다. (같은 주소값을 가짐)

    숫자나 스프링, 불리언은 그 데이터 자체가변수아 담겨있어서 데이터 자체가 복사되어 들어오지만 object는

    > 주소값만 ! 복사

     

    obj.name = 'james';
    console.log('----------');
    console.log(obj.name);
    console.log(obj2.name);
     출력하면 >

    name을 'james'로 업데이트 했기 때문에 'name'을 출력하면 obj, obj2 둘다 james 로 업데이트

     

     

     

    가리키고 있는 주소값이 동일하기 때문에 어떤 곳을 통해서 이름을 업데이트 해도 둘다 변경된다.

     

     

    변수를 선언하면 데이터를 담을 공간이 할당되고  'number, string, boolean, null, undefined'  경우는 데이터가 작은 단위이기 때문에 그대로 값 자체가 복사되고 들어가고 들어오지만,

    object는 뚱뚱한 아이이기 따로 어딘가에 할당되어 있고, 주소값(레퍼런스)가 복사되어 전달된다.

    > object를 통해서 데이터를 변경하면 가리키고 있는 데이터  업데이트

     

    -----------------------------------------------------------------------

     

    'let' 은 선언하고 나면 값 변경이 가능하다.

    let a =2;
    a = 5;
    a = 6;
    # 마음대로 바꿀 수 있다.

     

    'const'라는 상수 변수는 한번 선언하면 절대로 변경할 수 없다. > 오류 발생한다.

    const 로 정의를 한번 하게 되면 절대 그 값은 변경할 수 없다.

     

     

    하지만!!!      왜 object를 const로 했는데 변경이 가능한가????

    const obj = {
    	name : 'ellie',
        age = 5,
    };

    object에 할당된 주소값(ref)는 할당되면 잠겨서 다른 자체의 reference 로 변경  →  공간이 잠겨있음

    대신에 가지고 있는 'name'은 변경이 가능하다.

    > , 공간은 잠겨 있어서 변경은 불가능하지만 '레퍼런스(주소값)'이 가리키고 있는 것을 이용해서 변경은 가능

     

    상수변수를 쓴다는 것은 상수 변수가 담겨있는 obj 공간 자체는 변경이 불가능

    number, string과 달리 값 자체가 들어있는 것이 아닌 주소값이 들어있는 object는 어딘가에 따로 저장되어 있고 그것을 가리키고 있는 referenc가 들어있고, 그 reference 는 다른 object으로 변경은 불가능하지만!

    하지만 reference 안에 내용은 변경이 가능하다.

     

    'SYNC 기술면접 준비' 카테고리의 다른 글

    자바스크립트 6. 연산  (0) 2023.11.07
    자바스크립트 5. 함수  (0) 2023.11.07
    자바스크립트 4. 객체  (0) 2023.11.06
    자바스크립트 3. 배열  (0) 2023.11.05
    자바스크립트 2. 데이터 타입  (0) 2023.11.05
Designed by Tistory.