JavaScript

[JavaScript] 배열

quedevel 2020. 3. 21. 14:55
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