source

자바스크립트에서 배열을 선언할 때 지켜야 할 가장 좋은 방법은 무엇입니까?

manysource 2023. 11. 1. 22:27

자바스크립트에서 배열을 선언할 때 지켜야 할 가장 좋은 방법은 무엇입니까?

새 배열을 선언해야 할 때 이 표기법을 사용합니다.

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