새 배열을 선언해야 할 때이 표기법을 사용합니다
var arr = new Array();
그러나 온라인 (예 : jsbin) 을 테스트 할 때 “배열 리터럴 표기법 [] 사용”이라는 경고 메시지가 표시됩니다.
생성자를 사용하지 않는 이유를 찾지 못했습니다. 어떤 방법으로 사용하는 것보다 덜 효율적 []
입니까? 아니면 나쁜 습관입니까?
var arr = [];
대신 사용해야 할 이유가 var arr = new Array();
있습니까?
답변
대부분 사람들이 사용 var a = []
하기 때문에 더글러스 크록 포드는 이렇게 말한다 .
그의 이유는 다음과 같은 비 직관적이고 일관되지 않은 행동을 포함합니다 new Array()
.
var a = new Array(5); // an array pre-sized to 5 elements long
var b = new Array(5, 10); // an array with two elements in it
미리 지정된 숫자 요소가 하나만new Array()
있는 배열을 만들 수있는 방법이 없습니다 .
[]
실제로 사용하는 것이 더 효율적 이고 안전합니다 ! Array
생성자 를 덮어 써서 이상하게 만들 수는 있지만의 동작을 덮어 쓸 수는 없습니다 []
.
개인적으로 나는 항상 구문을 []
사용하고 마찬가지로 항상 {}
대신 구문을 사용 합니다 new Object()
.
답변
한 가지 중요한 차이점은이 []
것입니다 항상 반면, 새로운 배열을 인스턴스화 new Array
할 수있는 다른 개체를 만드는 납치 .
(function () {
"use strict";
var foo,
bar;
//don't do this, it's a bad idea
function Array() {
alert('foo');
}
foo = new Array();
bar = [];
}());
내 예제 코드에서는 Array
함수를 나머지 문서 범위에서 숨겨 두었 습니다. 그러나 이런 종류의 문제가 발생하면 코드가 잘 닫히지 않았을 가능성이 높습니다. 찾기가 어려울 수 있습니다.
면책 조항 : Array
생성자 를 납치하는 것은 좋지 않습니다 .
답변
유지 관리를 위해 []
배열 리터럴은 대부분의 개발자가 사용하므로 예측하기 쉽습니다. 대부분의 배열 사용법은 리터럴을 사용하며 다른 개발자가 사용하는 코드와 코드를 일치시키는 데 가치가 있습니다.
빈 배열의 경우 []
var ns = [];
var names = [ 'john', 'brian' ];
여기 에 표시된 것처럼 , 비어 있고 알려진 몇 개의 요소에 리터럴을 사용하는 것은 Array 생성자보다 더 뚱뚱합니다.
알려진 크기의 배열의 경우 new Array(size)
크기를 알면 Array 생성자를 사용하면 성능이 크게 향상됩니다. 그러나 그것은 또한 이미 모든 값을 채우는 ‘정의되지 않은’배열을 처리해야한다는 것을 의미합니다.
여기에 표시된대로
// fill an array with 100 numbers
var ns = new Array( 100 );
for ( var i = 0; i < 100; i++ ) {
ns[i] = i;
}
이것은 매우 작은 배열 에도 작동합니다 .
답변
아니요, 실제로 빈 배열에 다른 표기법을 사용할 이유가 없습니다.
그러나 대부분의 브라우저 x = [];
는 Constructor를 호출하는 것보다 약간 더 나은 성능을 보여줍니다 .
특정 크기와 배열을 작성해야하는 경우, 종류의 필요 사용에 x = new Array(10);
10 개 배열을 만들 것입니다 예를 들어, undefined
슬롯.
답변
- var arr = []은 배열 / 객체 리터럴을 사용합니다
- var arr = new Array ()는 배열 / 객체 생성자를 사용합니다
생성자를 호출 할 필요가 없기 때문에 배열이나 객체를 정의하는 가장 빠른 방법은 문자 그대로입니다.
var arr1 = new Array(1, 2, 3, 4);
var arr2 = [1, 2, 3, 4];
alert(arr1[0]); // 1
alert(arr2[0]); // 1
var arr3 = new Array(200);
var arr4 = [200];
alert(arr3[0]); // 'undefined'
alert(arr4[0]); // 200
답변
둘 다 맞습니다. 하지만 대부분의 사람들은var a = []
JavaScript에서 배열을 선언하는 세 가지 방법
방법 1 : JavaScript “new”키워드를 사용하여 배열을 메모리에 명시 적으로 선언하여 배열을 메모리에 인스턴스화 (즉, 생성하여 사용 가능하게 함) 할 수 있습니다.
// Declare an array (using the array constructor)
var arlene1 = new Array();
var arlene2 = new Array("First element", "Second", "Last");
방법 2 : 우리는 대체 방법을 사용하여 배열을 선언합니다.
// Declare an array (using literal notation)
var arlene1 = [];
var arlene2 = ["First element", "Second", "Last"];
방법 3 : JavaScript를 사용하면 특정 메서드를 호출하여 간접적으로 배열을 만들 수도 있습니다.
// Create an array from a method's return value
var carter = "I-learn-JavaScript";
var arlene3 = carter.split("-");
답변
생성자가 인수로 취할 수있는 한계가 있습니다.
대부분의 시스템에서 한계는 2 ^ 16 (2 바이트)입니다.
var myFreshArr = new Array(0,1,2,3 ..... 65536);
오류가 발생합니다 (너무 많은 인수 ….)
리터럴 []을 사용하면 그러한 문제가 없습니다.
큰 배열에 신경 쓰지 않는다면 원하는 것을 사용할 수 있다고 생각합니다.