Push() 메서드는 배열의 끝에 한개 또는 그 이상의 요소들을 추가하고,
요소가 추가된 배열의 길이(length)를 반환한다.
const apples = ['Fuji', 'Gala']
const trees = apples.push('Pink Lady', 'Washington')
console.log(apples);
console.log(trees);
push() 메서드로 인해 apples 배열에는 Fuji, Gala 라는 요소가 배열의 끝에 추가되었고,
push() 메서드의 반환값은 새로운 배열의 길이 이므로 trees 에는 4가 할당되었다.
아래의 코드는
각 변수에 동일한 배열의 레퍼런스를 참조하게 한 후
동일한 배열의 레퍼런스를 push한 것이다.
말보다는 코드를 보는게 더 이해가 잘 간다.
const peaches = [4, 8, 12]
const plums = peaches
const b = peaches.push(plums)
console.log(peaches)
console.log(plums)
console.log(b)
이 경우, plums와 peaches는 참조하는 배열의 주소가 같다.
따라서 peaches.push(plums)를 하게되면
마지막 배열에 자신이 참조하는 배열 자체를 또 추가하게 된다.
따라서 아래와 같이 출력된다.
(같은 레퍼런스를 순환참조하는 의미)
이것은 어떻게 출력될까?
const peaches = [4, 8, 12]
const plums = peaches
peaches.push(plums)
peaches[3][1] = 39
console.log(peaches);
peaches[3][1] = 39의 의미는 뭘까?
push 메서드에 의해 추가된 동일한 배열을 생각해보자.
peaches와 plums은 [4, 8, 12, [4, 8, 12]] 일 것이다.
이 때 첫 배열의 인덱스는 0, 1, 2, 3이다.
이를 통해 [3][1]이 세번째 인덱스의 [1] 값을 지정한다는 것을 알 수 있다.
그 값을 39로 바꾼다면
[4, 39, 12, [4, 39, 12]] 가 될 것이다.
위의 배열은 서로 참조가 같기 때문에 값이 같이 바뀐다.
'Javascript' 카테고리의 다른 글
shift() (0) | 2022.08.11 |
---|---|
Pop() (0) | 2022.08.11 |
Stopwatch 만들기 (html, Javascript) (0) | 2022.08.10 |
비원시값 Circular (?) (0) | 2022.08.10 |
배열 연습 (0) | 2022.08.10 |