Jestem całkiem nowym użytkownikiem Javascript i starałem się dokładnie zrozumieć, jak działa pętla for...in
w oparciu o działanie operatora in
.In-operator przed i po pętli for-in
This wyjaśnił zamieszanie.
Jednak jestem teraz zdezorientowany, dlaczego operator in
zwraca false
we wszystkich scenariuszach oprócz ostatniego.
Wygląda na to, że pętla for...in
tworzy klucz keyTest w obj z wartością ostatniej iteracji.
Czy moje zrozumienie jest prawidłowe? Czy pętle for...in
tworzą klucze/wartości w obiekcie, który iterują, gdy są używane do przechodzenia przez wszystkie klucze obiektów?
Jeśli tak, pomoc w zrozumieniu naprawdę pomoże.
var keyTest, obj = {}
keyTest in obj; // false
for(var keyTest in obj) { obj[keyTest] };
keyTest in obj; // false
obj = { a : 1, b : 2 };
keyTest in obj; // false
for(var keyTest in obj) { obj[keyTest] };
keyTest in obj; // true
obj[keyTest] // 2
'for-in' po prostu iteruje po kluczach obiektów, nic więcej. – zerkms
i 'in' zwróci wartość true, jeśli obiekt zawiera daną właściwość. keytest i obj są obiektami niezależnymi, żaden nie jest własnością innego ... –