Tôi biết for... invòng lặp là gì (nó lặp qua khóa), nhưng lần đầu tiên nghe về for... of(nó lặp lại theo giá trị).
Tôi bối rối với for... ofvòng lặp. Tôi đã không nhận được tính từ. Đây là mã dưới đây:
var arr = [3, 5, 7];
arr.foo = "hello";
for (var i in arr) {
console.log(i); // logs "0", "1", "2", "foo"
}
for (var i of arr) {
console.log(i); // logs "3", "5", "7"
// it is does not log "3", "5", "7", "hello"
}
Những gì tôi nhận được là, for... oflặp đi lặp lại trên các giá trị tài sản. Vậy thì tại sao nó không đăng nhập (trở lại) "3", "5", "7", "hello"thay vì "3", "5", "7"? nhưng for... invòng lặp lặp trên mỗi khóa ( "0", "1", "2", "foo"). Ở đây for... invòng lặp cũng lặp lại trên foophím. Nhưng for... ofkhông lặp lại giá trị footài sản tức là "hello". Tại sao nó lại như vậy?
Tóm lại:
Ở đây tôi điều khiển for... ofvòng lặp. Nó nên đăng nhập "3", "5", "7","hello"nhưng ở đây nó đăng nhập "3", "5", "7". Tại sao ?
for ... ofđã được đưa vào ngôn ngữ để khắc phục các vấn đề khi sử dụng for ... invới Mảng. Array.prototypecó thể được sửa đổi theo cách có sẵn các thuộc tính bổ sung, khiến cho việc lặp lại chúng không an toàn vì bạn có thể nhận được các khóa số mà bạn không mong đợi.
of(đối với các vòng lặp) , vì nó hỏi về một hành vi cụ thể của tính năng, thay vì yêu cầu tổng quan chung.
for <key> in" và " for <value> of" và nhận ra IE không hỗ trợfor..of
