728x90
반응형
JavaScript의 배열은 크기를 미리 정하지 않으며 문자열, 숫자, 객체를 담을 수 있다.
var arr = [ 1, "str", [2] ]
>> undefined
arr[0]
>> 1
arr[1]
>> "str"
arr[2]
>> [2]
arr[2][0]
>> 2
arr.length
>> 3
delete arr[0]
>> true
arr
>> (3) [empty, "str", Array(1)]
arr.length
>> 3
delete 연산자를 사용하여 해당 슬록을 제거할 수 있지만, length 프로퍼티 값까지 바뀌지 않는다.
값 - 복사, 레퍼런스-복사
var a = 2
var b = a // 'b'는 언제나 'a'에서 값을 복사한다.
b++
a
>> 2
b
>> 3
var c = [ 1, 2, 3 ]
var d = c // 'd'는 공유된 '[ 1, 2, 3 ]'값의 레퍼런스다.
d.push(4)
c
>> [ 1, 2, 3, 4 ]
d
>> [ 1, 2, 3, 4 ]
하지만 JavaScript에 포인터란 없다.
var a = [ 1, 2, 3 ]
var b = a
a
>> [ 1, 2, 3 ]
b
>> [ 1, 2, 3 ]
b = [ 4, 5, 6 ]
a
>> [ 1, 2, 3 ]
b
>> [ 4, 5, 6 ] // 'b'에 [ 4, 5, 6 ]으로 할당해도 a가 참조에는 영향을 받지 않는다.
값-복사냐 레퍼런스-복사냐를 마음대로 결정할 수 없다.
전적으로 값의 타입을 보고 엔진의 재량으로 결정된다.
728x90
반응형
'JavaScript' 카테고리의 다른 글
[JavaScript] Natives (0) | 2020.03.21 |
---|---|
[JavaScript] JavaScript 타입 (0) | 2020.03.21 |
[JavaScript] 즉시 실행 함수 (0) | 2020.03.18 |