Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- error
- 자바스크립개념
- angular
- ion-range
- Ionic
- border-width
- 테두리굵기
- Sentry
- aab 배포
- getElementsByClassName
- zsh
- NVM
- IONIC3
- Visual Studio Code
- JavaScript
- ChangeDetectorRef
- rxjs
- php
- change detection
- angular5
- typescript
- fromEvent
- 변화감지
- code .
- hashchange
- 이미지바꾸기
- Git
- VSCode
- oh-my-zsh
- sealize
Archives
- Today
- Total
hsunny study blog
new Array() vs [] 본문
자바스크립트에서 배열을 선언하는 방식은 2가지가 있습니다.
Array 객체를 이용한 선언 | 객체 리터럴을 이용한 선언 |
let arr = new Array(); | let arr = []; |
두 방식의 차이점에 대해 이야기해보도록 하겠습니다.
왜 new Array() 보다 []의 선호도가 높을까?
new Array()는 직관적이지 않습니다.
- Array 객체의 constructor에 전달하는 숫자가 1개인 경우와 2개 이상인 경우
A.
//run Chrome
let arr1 = new Array(5);
console.log(arr1);
// [empty × 5]
arr1.length
// 5
arr1[0];
// undefined
B.
//run Chrome
let arr2 = new Array(1, 2, 3, 4, 5);
console.log(arr2);
// [1, 2, 3, 4, 5]
arr2.length
// 5
arr2[0];
// 1
A와 같이 new Array의 constructor에 하나의 숫자만 넣으면 배열의 크기로 인식하지만, 두 개 이상의 숫자를 전달하면 전달받은 값으로 배열을 초기화합니다. A의 사유로 하나의 숫자만 넣은 배열을 만들 수가 없습니다.
- A에서 만들어진 배열을 스트링으로 변환
//run Chrome
arr1.toString();
// ',,,,'
위 실험을 통해 arr1의 크기는 5라는 것을 알 수 있습니다. (원소 사이에 ,가 생깁니다.)
- []를 이용하면 A 문제점이 사라짐
//run Chrome
let arr3 = [5];
arr3.toString();
// '5'
arr3[0];
// 5
arr3.length;
// 1
+ 간결하다는 장점으로 []의 사용을 권장한다고 합니다. 여기에서 더 많은 내용을 확인하실 수 있습니다.
속도 비교
테스트 코드
console.time('using[]')
for(var i=0; i<200000; i++){var arr = []};
console.timeEnd('using[]')
console.time('using new')
for(var i=0; i<200000; i++){var arr = new Array};
console.timeEnd('using new')
크롬에서는 []를 실행하는 것의 속도가 더 빨랐습니다. 상황에 따라 new Array()의 속도가 더 빠르게 나올 때도 있었지만 전반적으로 []의 실행속도가 빨랐습니다.
테스트 대상 브라우저 : Chrome, IE, Edge
Edge의 경우 실행시간의 차이가 세 브라우저 중 가장 컸습니다. (using[]: 392.3ms, using new: 948.4ms)
new Array에 크기를 지정한다면 []보다 더 빠르게 실행될 수도 있습니다. 테스트 내용, 원문에 대해서는 여기를 확인해주세요.
기타
[] 를 사용하여 초기화할 때 주의점
마지막 요소의 끝에 , 를 넣는 것은 지양해야 합니다. 브라우저마다 다르게 해석할 수 있습니다.
var cars = [
"Saab",
"Volvo",
"BMW", // 여기 붙은 ,
];
원본 글은 여기에서 확인할 수 있습니다.
'programming > javascript' 카테고리의 다른 글
논리 연산자 (0) | 2020.09.14 |
---|---|
[jQuery] serializeArray()를 이용해 form 값을 한번에 가져오기 (0) | 2019.11.29 |
제곱근 구하기 (0) | 2019.11.25 |
[jQuery] serialize()를 이용해 form 값을 한번에 가져오기 (0) | 2019.10.05 |
hashChange (0) | 2019.07.20 |