Tôi biết for... in
vò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... of
vò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... of
lặ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... in
vòng lặp lặp trên mỗi khóa ( "0", "1", "2", "foo"
). Ở đây for... in
vòng lặp cũng lặp lại trên foo
phím. Nhưng for... of
không lặp lại giá trị foo
tà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... of
vò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 ... in
với Mảng. Array.prototype
có 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