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

home2 게시판 JavaScript, TS 게시판 output 결과값이 다른 이유

output 결과값이 다른 이유

  • 이 주제에는 3개 답변, 2명 참여가 있으며 codingapple3 년 전에 전에 마지막으로 업데이트했습니다.
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 글쓴이
  • #35124

    frysweet
    참가자

    선생님 인스턴스 안에 얕은 복사로 새로운 인스턴스를 주입한 후(array.push 사용), 함수를 변경하는 테스트를 해봤는데요.
    결과값을 콘솔에 출력해보면,
    인스턴스0 배열 안에 인스턴스 1_1, 1_2는 제대로 주입된것이 인스턴스0의 배열에서 확인이 가능한데,
    인스턴스0안의 인스턴스1_1 의 배열에는 주입이 되지 않은 것으로 확인 됩니다. -> 인스턴스 1_1 이 가지고 있는 array에서 확인.
    또 인스턴스가 가지고 있는 프로퍼티 값인 함수를 바꾸고 인스턴스 자체를 출력해보면,
    출력한 인스턴스의 프로퍼티 값에 함수(this.함수)가 바뀌지 않고 원래 함수를 가지고 있는데, (원래 this.함수 이름 -> sample() ) 
    인스턴스.함수 식으로 프로퍼티를 출력해보면 바뀐 함수가 제대로 나옵니다. ( 바뀐 this.함수 = sample2() ) 

    사용 코드 -> https://replit.com/@snowb2/220528#script.js

    중첩 배열에 제대로 주입되지 않는 이유와
    'console.log(인스턴스) 출력시 -> 인스턴스.함수 값과 console.log(인스턴스.함수)로 출력시 값이 다른 이유에 대해 설명 부탁드립니다.

    #35135

    codingapple
    키 마스터

    첫째는 잘 되는거같은데요 

    {"blocks":[],"value":"인스턴스 2-1"}]

    인스턴스0에는 이거 잘 들어있습니다

    둘째도 출력해보니까 어떻게 출력하든 둘다 sample2() 로 잘 나옵니다 

     

     

    #35193

    frysweet
    참가자

    다시 테스트해보니, 함수 프로퍼티 변동후 출력은 잘 되는데,
    중첩배열에 들어있는 인스턴스가 보이지 않는 이유가 .splice() 때문이었던 것 같습니다.
    코드 61줄에 .splice() 하는 부분을 삭제하고, 전체 코드를 실행하면, 38 코드가 가리키는 부모 인스턴스의 배열의 배열 안에서 인스턴스 2_1이 제대로 들어가 보이는데요.
    61 번째 줄 코드인 .splice()를 다시 추가하면, 38줄 코드의 실행결과에서 배열의 배열 안에 인스턴스2_1이 보이지 않습니다.
    .splice()는 뒤의코드이고, 자바스크립트는 코드를 차례대로 실행하는데 어째서 61코드보다 먼저인  38코드의 실행결과에서 차이가 나는 걸까요?
    테스트 코드 -> https://replit.com/@snowb2/220528#script.js

    -> 61 이후 코드를 삭제하고 실행한 38번 코드 결과 : 인스턴스 2_1이 제대로 들어가 있음.

    -> 61 이후를 추가하고 실행한 38번 코드 결과 : 인스턴스 2_1이 삭제된 결과가 38번째에서 미리 반영됨.  : 인스턴스 2_1 삭제

     

    #35218

    codingapple
    키 마스터

    그건 파란색 i 아이콘에 마우스올려보면 됩니다 

    콘솔창에 있는것들은 클릭해서 펼쳐볼 때 그제서야 값을 계산해주는 경우도 있습니다 

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

About

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

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

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