예, 있습니다. 실제로 내부적으로 해시 테이블이므로 큰 정수뿐만 아니라 문자열, 부동 소수점 또는 다른 객체를 사용할 수 있습니다. 모든 키는 해시에 추가되기 전에 toString()
을 통해 문자열로 변환됩니다. 당신은 몇 가지 테스트 코드와이를 확인할 수 있습니다
<script>
var array = [];
array[0] = "zero";
array[new Date().getTime()] = "now";
array[3.14] = "pi";
for (var i in array) {
alert("array["+i+"] = " + array[i] + ", typeof("+i+") == " + typeof(i));
}
</script>
디스플레이 : 난 단지 당신에게 실제로 정의 된 인덱스를 제공 for...in
구문을 사용하는 방법
array[0] = zero, typeof(0) == string
array[1254503972355] = now, typeof(1254503972355) == string
array[3.14] = pi, typeof(3.14) == string
알 수 있습니다. 좀 더 일반적인 for (var i = 0; i < array.length; ++i)
스타일을 사용한다면 비표준 배열 인덱스에 문제가있을 것입니다.
당신은 그냥 그것을 밖으로 시도하고 충돌 볼 왜. –
@NickLarsen : http://jsbin.com/okuze <- no crash ... ;-) – Shog9
이렇게하는 것의 단점은 파이어 버그에서의 디버깅의 어려움입니다. 배열의 log 문은 배열의 처음 1000 개 요소 만 나열합니다.이 요소는 모두 "정의되지 않음"입니다. 또한 array.length는 n-1이 정의되지 않은 "유령"일지라도 배열에 n 개의 요소가 있음을 알려줍니다. –