Thuộc tính độ dài không được tính trên mỗi cuộc gọi, nhưng phiên bản thứ hai sẽ nhanh hơn khi bạn đang lưu vào bộ nhớ cache tra cứu thuộc tính. Ngay cả với hầu hết các phiên bản JS hiện hành (V8, TraceMonkey, SquirrelFish Extreme) sử dụng nâng cao (ví dụ: SmallTalk age;)) thuộc tính caching tra cứu tài sản vẫn là ít nhất một nhánh có điều kiện nhiều hơn phiên bản thứ hai của bạn.
Mảng.length không liên tục vì các mảng JS có thể thay đổi được, vì vậy, push, pop, array[array.length]=0, etc
có thể thay đổi tất cả.
Có các khái niệm khác như DOM NodeList
mà bạn nhận được từ các cuộc gọi như document.getElementsBySelector
được dự kiến sẽ hoạt động trong trường hợp này độ dài có thể được tính toán lại khi bạn lặp lại. Nhưng sau đó nếu chiều dài không nhận được recomputed có một cơ hội tốt mà nó cũng sẽ có thực sự thay đổi, do đó, bộ nhớ đệm bằng tay đầu ra có thể không hợp lệ.
Sự khác biệt giữa hai cách tiếp cận là không thể bỏ qua cho một mảng. Nó chỉ trở nên quan trọng khi giao dịch với DOM. – AnthonyWJones