Javascript Cookbook

들어가며

var arrObject = new Array("val1", "val2");  //객체로서의 배열
var arrLiteral = ["val1", "val2"];  //배열 리터럴

자바스크립트 엔진에 있어 배열 리터럴은 접근할 때마다, 특히 함수를 호출할때마다 매번 재해석해야 하는 대상이다. 그래도 좋은 점은 배열 리터럴은 함수에 값을 전달하려고 만들었던 임시 변수를 대체할 수 있다

함수나 메서드를 호출할 때 배열 리터럴을 만들어 사용할 수도 있다.

someFunction("param1", ["val1", "val2"]);

주의할 점은 함수에 배열 리터럴을 포함한 변수를 전달하면 이 값은 레퍼런스로 전달된다. 이는 Array 객체를 포함하고 있는 변수를 전달할 때와 같다. 따라서 함수 안에서 변수의 값을 바꾸면 함수 바깥에도 반영된다.

리터럴이든 객체이든 상관없이 배열은 자료형이 서로 다른 값을 저장할 수 있다.

var arrObject = new Array("val1", 34, true);
var arrLiteral = [arrObject, "val2", 18, false];

배열을 출력할 수도 있는데 자바스크립트 엔진은 자동으로 배열을 문자열 형태로 변환한다.

alert(arrLiteral);  //val1, 34, true, val2, 18, false 출력

이 예제에서 자바스크립트 엔진은 배열을 문자열로 변환했다. 배열 리터럴은 물론 배열 리터럴에 포함된 자신만의 원소를 가진 배열 객체도 변환했다.