Tại sao sử dụng chuỗi làm khóa của mảng, bảng điều khiển hiển thị mảng đó mà không có các giá trị được khai báo này và trong khi lặp lại bằng các giá trị này khi các chuỗi không được hiển thị? , mặc dù tôi có thể nhận được giá trị của chúng.Chuỗi dưới dạng các mảng của mảng trong javascript
>> var arr = [ 0, 1, 2, 3 ];
undefined
>> arr["something"] = "aught";
"aught"
>> arr
[0, 1, 2, 3]
>> arr["something"]
"aught"
>> for(var i = arr.length; i--; console.log(arr[ i ]));
3
2
1
0
Tôi hiểu rằng mảng là đối tượng đã triển khai một số loại giao diện 'liệt kê' trong công cụ của javascript. Thú vị nhất là thông dịch viên không ném cảnh báo hoặc lỗi vì vậy tôi đã dành một vài thời gian tìm kiếm nơi dữ liệu có thể bị mất. tôi bây giờ, tôi đã sai và tôi đã sử dụng []
thay vì {}
@abuduba, bởi vì không có gì sai :-) Mã của bạn hoàn toàn hợp lệ javascript. Nó không rõ ràng đối với người đọc vì bạn đang trộn 2 loại mảng nhưng nó hợp lệ. Tại sao bạn muốn người phiên dịch chỉ ra rằng có điều gì đó sai trái khi không có gì sai. –
Đây chủ yếu là một vấn đề về thuật ngữ, nhưng javascript thường KHÔNG gọi '{}' là một mảng kết hợp. Họ gọi nó là một đối tượng có thuộc tính. Không phải hầu hết mọi người đều đồng ý rằng tốt nhất là không nên nhầm lẫn mọi thứ bằng cách gọi một đối tượng javascript là một mảng kết hợp? – jfriend00
Lưu ý: Nếu bạn cố gắng sử dụng '' defineProperty'' trên mảng như '' Object.defineProperty.call (arr, 'something', 'aught'); '' nó sẽ ném một lỗi. – David