• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 JavaScript, TS 게시판 이상한 Reference data type과 더 이상한 예제 3개 질문 드립니다

이상한 Reference data type과 더 이상한 예제 3개 질문 드립니다

8 글 보임 - 1 에서 8 까지 (총 8 중에서)
  • 글쓴이
  • #34583

    조성익
    참가자

    var 이름1 = { name : '김' };

    function 변경(obj){
      obj  = { name : 'park' };
    }

    변경(이름1);

    을 할 경우 obj는 새로운 화살표를 얻고 var obj = { name : 'park' } 로 새로운 오브젝트가 할당된다고 배웠습니다

    그러면 변경(이름1); 부분에 이름1이 아닌 아무것도 아닌 변경(아무거나);를 하게 되면

    var 아무거나 = { name : 'park' } 이 되는게 아닌건지요..

    아무거나를 출력해도 Uncaught ReferenceError: 아무거나 is not defined 에러가 떠서

    위에 var 아무거나 를 변수 선언 해도 undefined가 나옵니다

    왜 이런건지 알려주시면 감사드리겠습니다!

     

    #34591

    codingapple
    키 마스터

    변경(아무거나) 

    이건 '아무거나' 라는 변수를 함수에 파라미터로 넣으라는 뜻입니다 

    아무거나라는 변수가 위에 있어야합니다 

    #34614

    조성익
    참가자

    var 이름1 = { name : '김' };
    var 아무거나

    function 변경(obj){
      obj  = { name : 'park' };
    }

    변경(아무거나);
    console.log(이름1)
    console.log(아무거나)

     

    콘솔창 결과

    이름1 -> {name: '김'}

    아무거나 -> undefined

    이렇게 출력됩니다 ㅠㅠ

    '아무거나' 가 function 변경(obj){
      obj  = { name : 'park' };
    } 에서 obj, 즉 파라미터 부분에 들어가게 되면

     

    function 변경(아무거나){
     var 아무거나 = { name : 'park' };
    }

    가 되는 걸로 이해했는데 막상 실행하니 그렇지 않아 의문이 듭니다 ㅠㅠ

     

    혹시나 싶어

    변경("아무거나")를 해봐도 {name:'park'}이 아닌 undefined가 나옵니다..

    #34615

    조성익
    참가자

    제 추측이지만 혹시 var  변수가 function 범위라서

    function 안에서만 var 아무거나 = {name: 'park'}이 할당되고 function 밖에서는 사라지는건가요??

     

    var 이름1 = { name : '김' };

    function 변경(obj){
      obj  = { name : 'park' };
      console.log(obj)
    }

    변경(이름1)
    변경("아무거나");
    console.log(이름1)

     

    이렇게 해보니 

    콘솔창에

    변경(이름1)             -> {name:'park'}
    변경("아무거나")   -> {name:'park'}
    console.log(이름1) -> {name:'김'}

    으로 나오긴 하네요...

    사라진다기 보단 function 안에서만 할당되고 밖에 나오면 적용이 안되는게 맞는지 궁금합니다!

    #34626

    codingapple
    키 마스터

    var 아무거나

    function 변경(obj){
      obj  = { name : 'park' };
    }

    변경(아무거나);

     

    이러면 함수안에서는

    var obj = 아무거나;

    obj  = { name : 'park' };

    이게 차례로 실행됩니다 아무거나라는 변수에는 아무것도 집어넣은게 없군요 

    #34636

    조성익
    참가자

    감사합니다

    파라미터 obj에 아무거나를 넣는다고 해도

    아무거나 = {name:"park"}이 되는게 아니라

    파라미터명인 obj이라는 변수에 {name:"park"}이 되는거군요..

     

    이런 방식으로 object가 만들어지고 복사 될거라 예상했는데
    다음 강의들을 보고 나니 의미 없는 질문이였던걸 깨달았습니다 ㅎㅎㅎ...

    혹시 궁금증으로 추가적인 질문을 드리고 싶은데 obj = {name:"park"}가 될 때

    console.log(obj)를 하면 왜 {name:"park"}이 출력이 안될까요..?

    #34647

    codingapple
    키 마스터

    var 아무거나

    function 변경(obj){
      obj  = { name : 'park' };
      console.log(obj)
    }
    변경(아무거나);

    출력은 잘됩니다 

    #34651

    조성익
    참가자

    앗 감사합니다,, 다시 생각해보니 멍청한 질문이였네요;;

    제 의미는 console.log(obj)를 바깥에서 사용했을때 왜 안되나였는데

    var obj는 function 범위안에서만 유효한걸 또 까먹었습니다ㅠㅠ

    감사합니다!

8 글 보임 - 1 에서 8 까지 (총 8 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠