Wiem, co to jest for... inpętla (iteruje się po kluczu), ale usłyszałem po raz pierwszy o for... of(iteruje się po wartości).
Jestem zmieszany z for... ofpę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... ofiterację wartości nieruchomości. Dlaczego więc nie loguje się (nie zwraca) "3", "5", "7", "hello"zamiast "3", "5", "7"? ale for... inpętla iteruje się po każdym klawiszu ( "0", "1", "2", "foo"). for... inPętla tutaj również iteruje się po fookluczu. Ale for... ofnie przechodzi przez wartość foonieruchomości, tj "hello". Dlaczego tak jest?
Krótka historia w skrócie:
Tutaj konsola for... ofpętli. Powinien się zalogować, "3", "5", "7","hello"ale tutaj loguje się "3", "5", "7". Dlaczego ?
for ... ofzostał wprowadzony do języka, aby rozwiązać problemy z używaniem for ... intablic. Array.prototypemoż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
