Array.prototype.toString()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Array
인스턴스의 toString()
메서드는
지정된 배열 및 그 요소를 나타내는 문자열을 반환합니다.
시도해보기
구문
toString()
매개변수
없음.
반환 값
배열을 표현하는 문자열을 반환합니다.
설명
Array
객체는 Object
의 toString
메서드를 재정의합니다. 배열의 toString
메서드는 내부적으로 join()
을 호출하여 배열을 조인하고 쉼표로 구분된 각 배열 요소를 포함하는 하나의 문자열을 반환합니다. join
메서드를 사용할 수 없거나 함수가 아닌 경우, Object.prototype.toString
이 대신 사용되며 [object Array]
를 반환합니다.
const arr = [];
arr.join = 1; // `join`에 비함수 재할당
console.log(arr.toString()); // [object Array]
console.log(Array.prototype.toString.call({ join: () => 1 })); // 1
배열이 텍스트 값으로 표현되거나 문자열 연결에서 배열을 참고할 때, JavaScript는 toString
메서드를 자동으로 호출합니다.
Array.prototype.toString
은 다른 배열을 포함한 각 요소를 재귀적으로 문자열로 변환합니다. Array.prototype.toString
이 반환하는 문자열에는 구분 기호가 없으므로 중첩 배열은 중첩이 풀려서 보입니다.
const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];
console.log(matrix.toString()); // 1,2,3,4,5,6,7,8,9
배열이 그 자신이 요소의 하나가 되는 순환이 발생할 경우 브라우저는 순환 참조를 무시하여 무한 재귀 참조를 방지합니다.
const arr = [];
arr.push(1, [3, arr, 4], 2);
console.log(arr.toString()); // 1,3,,4,2
예제
toString() 사용하기
const array1 = [1, 2, "a", "1a"];
console.log(array1.toString()); // "1,2,a,1a"
희소 배열에서 toString() 사용하기
아래 join()
의 행위처럼 toString()
은 빈 슬롯을 undefined
와 동일하게 취급하며, 추가적인 분리자를 만듭니다.
console.log([1, , 3].toString()); // '1,,3'
배열이 아닌 객체에서 toString() 호출하기
toString()
은 범용적입니다. 이 메서드는 this
가 join()
메서드를 가지기를 기대합니다. 그렇지 않다면, Object.prototype.toString()
을 대신 사용합니다.
console.log(Array.prototype.toString.call({ join: () => 1 }));
// 1; 숫자 타입
console.log(Array.prototype.toString.call({ join: () => undefined }));
// undefined
console.log(Array.prototype.toString.call({ join: "not function" }));
// "[object Object]"
명세서
Specification |
---|
ECMAScript Language Specification # sec-array.prototype.tostring |
브라우저 호환성
BCD tables only load in the browser