Wiem, co to jest for... in
pętla (iteruje się po kluczu), ale usłyszałem po raz pierwszy o for... of
(iteruje się po wartości).
Jestem zmieszany z for... of
pętlą. Nie dostałem przymiotnika. Oto kod poniżej:
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"
}
Mam for... of
iterację wartości nieruchomości. Dlaczego więc nie loguje się (nie zwraca) "3", "5", "7", "hello"
zamiast "3", "5", "7"
? ale for... in
pętla iteruje się po każdym klawiszu ( "0", "1", "2", "foo"
). for... in
Pętla tutaj również iteruje się po foo
kluczu. Ale for... of
nie przechodzi przez wartość foo
nieruchomości, tj "hello"
. Dlaczego tak jest?
Krótka historia w skrócie:
Tutaj konsola for... of
pętli. Powinien się zalogować, "3", "5", "7","hello"
ale tutaj loguje się "3", "5", "7"
. Dlaczego ?
for ... of
został wprowadzony do języka, aby rozwiązać problemy z używaniem for ... in
tablic. Array.prototype
może zostać zmieniony w taki sposób, że dostępne są dodatkowe właściwości, co sprawia, że ich iteracja jest niebezpieczna, ponieważ można uzyskać klucze nienumeryczne, których się nie spodziewałeś.
of
(dla… pętli) , ponieważ pyta o konkretne zachowanie funkcji, zamiast prosić o ogólny przegląd.
for <key> in
” i „ for <value> of
” i zdaj sobie sprawę, że IE nie obsługujefor..of