Đọc và viết các phần tử mảng Javascript (tiếp tục)
Nó là hữu dụng để phân biệt rõ ràng một chỉ mục mảng khỏi một tên đặc tính object. Tất cả các chỉ mục là các tên
đặc tính, nhưng chỉ các tên đặc tính cái là các số nguyên giữa 0 và 232–2 là các chỉ mục. Tất cả các mảng là các
objects, và bạn có thể tạo các đặc tính với bất cứ tên nào trên chúng. Nếu bạn sử dụng các đặc tính cái là các chỉ
mục mảng, tuy nhiên, các mảng có hành vi đặc biệt cập nhật đặc tính length khi cần.
Chú ý rằng bạn có thể chỉ mục hóa một mảng sử dụng các số cái là âm hay cái không phải là số nguyên. Khi bạn làm
cái này, số được chuyển đổi thành một string, và string đó được sử dụng như tên đặc tính. Vì tên không phải là số
nguyên không âm, nó được đối xử như đặc tính object thông thường, không phải một chỉ mục mảng. Cũng vậy, nếu bạn chỉ
mục hóa một mảng với một string cái tình cờ là một số nguyên không âm, nó có hành vi như một chỉ mục mảng, không
phải một đặc tính object. Cái tương tự là đúng nếu bạn sử dụng một số dấu phẩy động cái là giống như một số nguyên:
a[-1.23] = true; // This creates a property named “-1.23”
a[“1000”] = 0; // This the 1001st element of the array
a[1.000] = 1; // Array index 1. Same as a[1] = 1;
Thực tế rằng các chỉ mục mảng đơn giản là dạng đặc biệt của tên đặc tính object có nghĩa rằng các mảng Javascript
không có khái niệm của một lỗi ” khỏi gianh giới”. Khi bạn thử truy vấn một đặc tính không tồn tại của bất cứ object
nào, bạn không nhận một lỗi; bạn đơn giản nhận undefined. Cái này chính là đúng cho các mảng như nó là cho các objects:
let a = [true, false]; // This array has elements at indexes 0 and 1
a[2] // => undefined; no element at this index.
a[-1] // => undefined; no property with this name.
