像 .map() 這樣的高階函數在 JavaScript 內部是如何運作的?
P粉107772015
2023-08-25 17:41:30
<p>現在每個人都試圖使用這些高階函數來透過編寫更少的程式碼來獲得有希望的結果。但我想知道這些函數內部是如何運作的。 </p>
<p>假設我寫了類似的東西</p>
<p>
<pre class="brush:js;toolbar:false;">var numbers = [16, 25, 36];
var results = numbers.map(Math.sqrt);
console.log(results); // [4, 5, 6]</pre>
</p>
<p>我知道「number」陣列的每個元素都在逐一迭代,但是<em>如何</em>? </p>
<p>我試著去尋找它,但尚未得到滿意的答案。 </p>
我想每個供應商都應該按照 規格
實際實作(例如 V8)可能有點複雜,請參考此答案作為開始。您也可以參考 github 中的 v8 原始碼,但孤立地理解其中的一部分可能並不容易。
引用上面的答案:
ES2015 規格:
"length"
))。.map
只是一個接受回呼、為陣列的每個項目呼叫回呼並將值指派給新陣列的方法。沒什麼特別的。您甚至可以自己輕鬆實現: