[JS] Array() 생성자 함수에 대해서 질문드립니다
let arr = Array(7,8);
console.log(arr); // [ 7, 8 ]
let arr2 = new Array(7,8);
console.log(arr2); // [ 7, 8 ]
new를 붙인거랑 안 붙인거랑 결과는 같던데 차이점이 뭔지 알려주시겠습니까?
안녕하세요.
let arr = Array(7,8);
console.log(arr); // [ 7, 8 ]
let arr2 = new Array(7,8);
console.log(arr2); // [ 7, 8 ]
new를 붙인거랑 안 붙인거랑 결과는 같던데 차이점이 뭔지 알려주시겠습니까?
>>
자바스크립트 같은 경우엔 문법이 엄격하지 않아서 둘 다 문제는 없습니다. 원칙은 new 를 쓰는게 맞습니다.
결론부터 설명하면
Array(7, 8) 로 만든 배열과 new Array(7, 8)로 만든 배열 모두 동일합니다.
자바스크립트의 스펙인 ECMA-262 15.4.1를 보면 함수로 호출하면 new 생성자로 객체를 만드는 것과 동일하다고 나와 있습니다.
15.4.1 The Array Constructor Called as a Function
When Array is called as a function rather than as a constructor, it creates and initialises a new Array object. Thus the function call Array(...) is equivalent to the object creation expression new Array(...) with the same arguments.
추가적으로 리터럴의 형태로 만드는 방법이 있는데 바로 대괄호를 사용하는 방법입니다.
let arr3 = [7, 8];
console.log(arr3); // [ 7, 8 ]
따라서 아래의 배열을 생성하는 방법들은 모두 동일합니다.
1) Array(7,8);
2) new Array(7,8);
3) [7, 8];