W dzisiejszych czasach wszyscy starają się korzystać z tego rodzaju funkcji wyższego rzędu, aby uzyskać obiecujące wyniki przy pisaniu mniejszej ilości kodu. Ale zastanawiam się, jak te funkcje działają wewnętrznie.
Załóżmy, że napiszę coś takiego
var numbers = [16, 25, 36];
var results = numbers.map(Math.sqrt);
console.log(results); // [4, 5, 6]
Wiem, że każdy element tablicy „liczba” iteruje się jeden po drugim, ale jak ?
Próbowałem go znaleźć, ale nie uzyskałem jeszcze zadowalającej odpowiedzi.
javascript
node.js
dictionary
higher-order-functions
Bilal Khan
źródło
źródło
map
która została dodana do typu Array. Ta funkcja przyjmuje funkcję jako parametr, który jest następnie wywoływany podczas zapętlania tablicy. Zwracane wartości wywołań funkcji są następnie zwracane w tablicy.Odpowiedzi:
.map
jest tylko metodą, która przyjmuje wywołanie zwrotne, wywołuje wywołanie zwrotne dla każdego elementu tablicy i przypisuje wartość do nowej tablicy. Nie ma w tym nic specjalnego. Możesz nawet samodzielnie go wdrożyć:Aby być w pełni zgodnym ze specyfikacją, należy również sprawdzić, między innymi, czy
this
jest to obiekt, żecallback
można wywoływać, i do.call
wywołania zwrotnego z drugim parametrem przekazanym,myMap
jeśli taki istnieje, ale nie są to szczegóły ważne dla początkującego zrozumienia funkcji wyższego rzędu.źródło
Chyba każdy sprzedawca powinien wdrożyć go zgodnie ze specyfikacją
Rzeczywista implementacja, na przykład V8, może być nieco złożona, odszukaj tę odpowiedź na początek. Możesz także odnieść się do źródła v8 w github, ale może nie być łatwo zrozumieć tylko jedną część w izolacji.
Cytat z powyższej odpowiedzi:
Specyfikacja ES2015:
"length"
)).źródło
<li>
list-style-type
nie można skopiować w Chrome ani FF. Czy zapisałeś liczby ręcznie, czy brakuje mi lepszej metody?