JavaScript에서 왜 []가 새로운 배열 ()보다 선호되는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1800594

  •  05-07-2019
  •  | 
  •  

문제

어딘가에 읽은 것을 기억합니다 (Crockford의 논문 중 하나에 있었다고 생각합니다). [] 사용하는 것보다 낫습니다 new Array(); 표기법.

그러나 나는 하나의 장점을 실제로 기억할 수 없습니다.

누구든지 전자가 후자보다 선호되는 이유에 대해 나에게 설명 할 수 있습니까?

다음은 내가 생각할 수있는 이유 중 하나입니다. [] ~보다 낫다 new Array();:

var Array = function () { };

우선 Array 객체는 코드를 깨뜨릴 것입니다 ...!

더 이상 이유가 있습니까?

도움이 되었습니까?

해결책

짧음

와이어 위로 전달하는 바이트가 적고, 해석하려면 바이트가 적고, 정신적 자원을 구문 분석 할 수 있습니다.

덜 더 많습니다.

일관성

이 두 줄의 코드의 차이점은 무엇입니까?

var arr = [5];
var arr = new Array(5);

에 따르면 여기 new Array(5); 5가있는 배열을 반환하지 않고 대신 5 개의 요소 배열을 반환하며 모든 요소가 있습니다. undefined. 이 두 줄은 동일한 배열을 반환합니다.

var arr = [5,6];
var arr = new Array(5,6);

다른 팁

한 가지 좋은 이유는 배열 생성자가 완전히 직관적이지 않은 거동을 가지고 있기 때문입니다. 예를 들어:

var a = new Array(5);
console.log(a.length); //prints "5"
console.log(a[0]); //prints "undefined"

var b = new Array(1,2);
console.log(b.length); //prints "2"
console.log(b[0]); //prints "1"

이 경우 A는 모든 요소가 정의되지 않은 크기 5의 배열로 끝나고 B는 값을 가진 크기 2의 배열이됩니다 [1,2].

var c = new Array("5");
console.log(c.length); //prints "1"
console.log(c[0]); //prints "5"

그리고 여기, 당신은 "5"를 포함하는 단일 요소 배열로 끝납니다.

일반적으로 아마도 당신은 아마해야합니다 절대 자바 스크립트의 내장 유형에 생성자를 사용하십시오. 그들은 모두 이와 같은 이상한 가장자리 케이스를 가지고 있습니다. 예를 들어:

var s = new String("Hello");
var l = "Hello";
console.log(typeof(s)); // prints "object"
console.log(typeof(l)); // prints "string"

우아

단순히 그것을 넣으려면 외모 특히 복잡한 데이터 구조에 대해 프로그래머가 구문 분석하기가 더 좋고 더 쉽습니다.

var a = [
    ['a list', 'of', 'strings'],
    [1, 2, 3, 4],
    { hello: "This is an object property." }
];

더 Clumsier OOP 중심 방법 :

var a = new Array();
var a2 = new Array();

a2.push('a list');
a2.push('of');
a2.push('strings');

var a3 = new Array();
a3.push(1);
a3.push(2);
a3.push(3);
a3.push(4);

var o = new Object();
o.hello = "This is an object property";
a.push(a2, a3, o);

new Array(1, 2, 3) 대신에 [1, 2, 3] 와 같다 new String("cow") 대신에 "cow"

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top