好吧,我意識到這可能是很多初學者 - 對你們許多人來說這裏,但我希望有人可以用我可以包裹頭腦的方式來解釋這一點。我的問題圍繞着我所聽到的功能性JavaScript - 遞歸的基礎。我正在開展一個個人項目,併爲其中一個人找到了一個很好的用例,但我仍然不太清楚發生了什麼 - 需要通過一個可視化的方式來思考。函數JS w /遞歸函數
所以,這裏是一個例子。正在解決的問題是一個簡單的幫助函數,用於查找DOM中匹配特定標記名的下一個兄弟(假設當調用函數時傳入當前元素和標記名,即findSibling(this, 'DIV')
)。
var findSibling = function(el, tagName) {
if (el.nextSibling.tagName === tagName.toUpperCase())
return el.nextSibling;
else
return findSibling(el.nextSibling, tagName);
}
好的,所以這個工程!大!但是,我永遠需要在這裏降落,而這真的不該有。我試圖白板出來,我能理解最好的是,這樣的事情正在發生:
findSibling(<span>
,DIV)▸findSibling(<span>
,DIV)▸findSibling(<span>
,DIV)▸<div>
假設我們有HTML是這樣的:
<div></div>
<span></span>
<span></span>
<span></span>
<div></div>
誰能幫助我想像這多一點?你第一次學習這個概念時可能使用過的任何提示/技巧?我只是在尋找那個燈泡......
另外,我被卡住了一段時間的一件事是第二個返回語句。爲什麼我不能在else中調用函數?爲什麼我需要回報?看起來像它只是調用與兄弟元素的函數。
謝謝!
'
說明 ' – Cilan