inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

안녕하세요. 배열 앝은 복사 관련 질문드립니다.

272

김동준

작성한 질문수 1

0

수업 설명에서 아래 코드와 같이 배열을 복사했을때 주소값을 복사하는 것이기 때문에 두개의 변수를 출력했을때 같다고 하셨습니다. 

하지만 실행했을 때 사진과 같이 나오는데 이유가 뭘까요..? ㅠ

let arr=[];
let answer = arr;
console.log(answer);
console.log(arr);
arr = [12345]
console.log(answer);
console.log(arr);
>>>결과 console

배열 코테 준비 같이 해요! 얕은복사 javascript

답변 2

2

jjang9

arr를 재할당해서 그렇습니다.

처음 arr = [1,2,3,4,5] 와 answer는 같은 참조값을 가지고 있기때문에 서로 값이 공유되지만,
arr 를 새로운 값으로 할당한 경우 arr는 새로운 참조값을 갖게되는 반면 answer는 여전히 [1,2,3,4,5]를 참조하고 있습니다. 

arr = [1,2,3] 으로 새로운 값을 할당하는것이 아니라 arr.pop() 혹은 arr.shift() 를 했을 경우엔 answer역시 arr와 같은 값을 가지는 것을 볼 수 있습니다. 

혹은 arr = [1,2,3] 로 재할당한 이후에 다시 answer = arr로 해주게되면 answer역시 [1,2,3]으로 다시 같은값을 공유하게 됩니다. 

해당개념의 경우엔 가비지컬렉션을 같이 살펴보시면 좋을거 같아요

https://ko.javascript.info/garbage-collection

* 혹시라도 제가 틀렸을경우엔 올바르게 지적 부탁드립니다 *_*

0

김동준

완전 이해했습니다! 감사합니다

1

김태원

안녕하세요^^

위에분 juuu o 님의 말씀대로 입니다.

let arr=[] //빈배열의 주소값 100번지가 할당됩니다.

answer=arr //answer도 100번지를 참조합니다. arr과 answer는 같은 곳을 참조하는 상황입니다.

arr=[1, 2, 3, 4, 5] //arr에 새로운 배열 [1, 2, 3, 4, 5]의 주소인 200번지가 할당됩니다.

여기까지의 상황은 arr은 200번지를 참조하고 있고, answer는 여전히100번지를 참조하고 있는 상황입니다.

0

김동준

친절한 설명 감사합니다!

continue를 사용하는 이유

0

79

2

정렬 가능 여부 판단하기

0

64

2

알고리즘 학습법 관련해서 질문드립니다.

0

86

1

코드 리뷰 부탁드립니다!

0

90

1

indexOf를 사용해서 풀어보았습니다 !!

0

68

1

저는 이런식으로 구현 해보았습니다 !!

0

64

1

12,13,14 강의 소리만 나오고 검은 화면입니다

0

100

3

반복문 최소화하고 indexOf 사용해서 풀어봤습니다

0

63

1

영상 보기 전에 직접 풀어봤습니다.

0

74

1

섹션1의 17번문제 이 풀이로 풀어도 될까요?

0

135

2

정규표현식으로 처리해도 상관없나요 ?

0

120

2

3칸씩 건너뛸 수 있을 경우

0

125

2

강의에 대해 질문있습니다.

0

135

2

Object와 Set을 이용해 풀어봤습니다.

0

117

2

이렇게 해도 되나요?

0

102

2

선생님 중복 단어나 중복관련 문제들은 set을 이용하면 좋을것 같습니다.

0

145

2

이렇게 풀어도 괜찮을까요?

0

138

1

이렇게 풀어도 괜찮을까요?

0

112

1

모든 아나그램 찾기에서 시간복잡도

0

98

1

코드리뷰 부탁드립니다.

0

130

1

for loop 탈출은 return 문으로 해도 되지 않나요?

0

133

1

투포인트알고리즘으로 풀어봤습니다.

0

142

0

코드 리뷰 부탁드립니다.

0

120

1

코드 맞게 작성한 거 아닌가여??

0

146

1