자바스크립트에서 배열을 선언할 때 지켜야 할 가장 좋은 방법은 무엇입니까?
새 배열을 선언해야 할 때 이 표기법을 사용합니다.
var arr = new Array();
그러나 jsbin과 같은 온라인 테스트를 할 때 "array 리터럴 표기법 []을(를) 사용하라"는 경고가 나타납니다.
시공자를 사용하지 않을 이유를 찾지 못했습니다.사용하는 것보다 효율성이 떨어집니다.[]
? 아니면 나쁜 연습입니까?
사용해야 할 합당한 이유가 있습니까?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' ];
여기에 나와 있는 것처럼 비어 있는 요소와 알려진 요소 몇 개에 리터럴을 사용하는 것이 배열 생성자보다 더 뚱뚱합니다.
알려진 크기의 배열을 사용합니다.new Array(size)
크기가 알려진 경우 배열 생성기를 사용하면 성능이 크게 향상됩니다.그러나 이미 '정의되지 않은' 배열이 모든 값을 채우고 있음을 의미하기도 합니다.
여기와 같이
// fill an array with 100 numbers
var ns = new Array( 100 );
for ( var i = 0; i < 100; i++ ) {
ns[i] = i;
}
이는 매우 작은 어레이에도 적용됩니다.
아니요, 실제로 빈 배열에 대해 다른 하나의 표기법보다 하나의 표기법을 사용할 이유가 없습니다.
그러나 대부분의 브라우저는 다음을 사용하여 약간 더 나은 성능을 보여줍니다.x = [];
건설자에게 전화하는 것 보다.
특정 크기의 배열을 생성해야 하는 경우 다음을 사용해야 합니다.x = new Array(10);
예를 들어, 10으로 배열을 생성할 수 있습니다.undefined
슬롯들
- vararr=[]는 배열/객체 리터럴을 사용합니다.
- vararar = 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 = []
자바스크립트에서 배열을 선언하는 세 가지 방법.
방법 1: 자바스크립트 "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: 자바스크립트는 특정 방법을 호출하여 간접적으로 배열을 만들 수도 있습니다.
// 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);
그러면 오류가 발생합니다. 인수가 너무 많습니다.
리터럴 []을 사용할 때는 그런 문제가 없습니다.
그런 큰 어레이를 신경쓰지 않으신다면, 원하시는 대로 사용하셔도 될 것 같습니다.
var array = [ 1, 2, 3, 4];
설탕입니다
var array = new Array(1, 2, 3, 4);
소금입니다.
왜냐하면.new Array()
애매합니다.올바른 생성자는 다음과 같습니다.
// Using brackets
[element0, element1, ..., elementN]
// Using new AND a list of elements
new Array(element0, element1, ..., elementN)
// Using new AND an integer specifying the array length
new Array(arrayLength)
언급URL : https://stackoverflow.com/questions/11500492/what-are-the-best-practices-to-follow-when-declaring-an-array-in-javascript
'source' 카테고리의 다른 글
ORA-32795: 생성된 always identity 열에 삽입할 수 없습니다. (0) | 2023.11.01 |
---|---|
인라인 자바스크립트 연기하는 방법? (0) | 2023.11.01 |
C의 포인터 크기 가져오기 (0) | 2023.11.01 |
2-D 배열 앨리어싱 시 예기치 않은 스트렐렌 최적화 (0) | 2023.11.01 |
조건문과 3항 연산자를 사용하지 않고 C에서 최대 3개의 숫자 찾기 (0) | 2023.11.01 |