Semua orang saat ini mencoba menggunakan fungsi tingkat tinggi semacam ini untuk mendapatkan hasil yang menjanjikan dengan menulis lebih sedikit kode. Tetapi saya bertanya-tanya bagaimana fungsi-fungsi ini bekerja secara internal.
Misalkan jika saya menulis sesuatu seperti
var numbers = [16, 25, 36];
var results = numbers.map(Math.sqrt);
console.log(results); // [4, 5, 6]
Saya tahu bahwa setiap elemen dari array 'angka' adalah iterasi satu per satu, tetapi bagaimana caranya ?
Saya mencoba mencarinya, tetapi saya belum mendapatkan jawaban yang memuaskan.
javascript
node.js
dictionary
higher-order-functions
Bilal Khan
sumber
sumber
map
yang ditambahkan ke tipe Array. Fungsi ini mengambil fungsi sebagai parameter yang kemudian dipanggil saat perulangan melalui array. Nilai balik dari panggilan fungsi kemudian dikembalikan dalam array.Jawaban:
.map
hanyalah metode yang menerima panggilan balik, memanggil panggilan balik untuk setiap item array, dan memberikan nilai ke array baru. Tidak ada yang istimewa tentang itu. Anda bahkan dapat menerapkannya sendiri dengan mudah:Untuk sepenuhnya memenuhi spesifikasi, Anda juga perlu memeriksa, antara lain, bahwa itu
this
adalah objek, bahwa itucallback
bisa dipanggil, dan ke.call
callback dengan parameter kedua diteruskan kemyMap
jika ada satu, tetapi itu adalah rincian tidak penting untuk pemahaman awal tentang fungsi tingkat tinggi.sumber
Saya kira setiap vendor seharusnya mengimplementasikannya sesuai spesifikasi
Implementasi aktual, misalnya V8 bisa sedikit rumit, lihat jawaban ini sebagai permulaan. Anda juga dapat merujuk sumber v8 di github tetapi mungkin tidak mudah untuk memahami hanya satu bagian dalam isolasi.
Dikutip dari jawaban di atas:
ES2015 spec:
"length"
)).sumber
<li>
list-style-type
ini tidak dapat disalin di Chrome atau FF. Apakah Anda menulis angka secara manual, atau apakah ada metode yang lebih baik yang saya lewatkan?