摘要:不過,可以使用命名函數(shù)表達(dá)式來達(dá)成相同的結(jié)果這種方式在嚴(yán)格模式和非嚴(yán)格模式下都行得通
遞歸
遞歸函數(shù)是在一個(gè)函數(shù)通過名字調(diào)用自身的情況下構(gòu)成的
function f(num) { if (num <= 1) { return 1; } else { return num * f(num - 1) } } f(3) // 6 var anotherFactorial = f; f = null; //f指向一個(gè)空指針 alert(anotherFactorial(4)); //出錯(cuò)!
arguments.callee 是一個(gè)指向正在執(zhí)行的函數(shù)的指針,因此可以用它來實(shí)現(xiàn)對函數(shù)的遞歸調(diào)用
function f(num) { if (num <= 1) { return 1; } else { return num * arguments.callee(num-1) } } f(3) // 6 var anotherFactorial = f; f = null; //f指向一個(gè)空指針 alert(anotherFactorial(4)); //24
但在嚴(yán)格模式下,不能通過腳本訪問 arguments.callee ,訪問這個(gè)屬性會導(dǎo)致錯(cuò)誤。不過,可以使用命名函數(shù)表達(dá)式來達(dá)成相同的結(jié)果
var factorial = (function f (num) { if (num <= 1){ return 1; } else { return num * f(num-1); } }); factorial(4) //24
這種方式在嚴(yán)格模式和非嚴(yán)格模式下都行得通
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/101487.html
摘要:函數(shù)和所生成的過程來源譯者飛龍協(xié)議函數(shù)是計(jì)算過程的局部演化模式。在這一章中,我們會檢測一些用于簡單函數(shù)所生成過程的通用模型。也就是說,遞歸函數(shù)的執(zhí)行過程可能需要再次調(diào)用這個(gè)函數(shù)。 3.2 函數(shù)和所生成的過程 來源:3.2 Functions and the Processes They Generate 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 函數(shù)是計(jì)算過程的局部演化...
摘要:高階函數(shù)函數(shù)式編程中,接受函數(shù)作為參數(shù),或者返回一個(gè)函數(shù)作為結(jié)果的函數(shù)通常就被稱為高階函數(shù)。均屬于高階函數(shù),高階函數(shù)并不神秘,我們?nèi)粘>幊桃矔玫健⒖佳菟愫瘮?shù)式編程指南入門康托爾哥德爾圖靈永恒的金色對角線原文函數(shù)與演算 緣起 造了一個(gè)輪子,根據(jù)GitHub項(xiàng)目地址,生成項(xiàng)目目錄樹,直觀的展現(xiàn)項(xiàng)目結(jié)構(gòu),以便于介紹項(xiàng)目。歡迎Star。 repository-tree 技術(shù)棧: ES6 ...
摘要:組合子是演算中的一個(gè)概念,是任意函數(shù)的不動點(diǎn),在函數(shù)式編程中主要作用是提供一種匿名函數(shù)的遞歸方式。組合子如下本文將盡量通俗易懂的以實(shí)現(xiàn)匿名函數(shù)遞歸為導(dǎo)向,推導(dǎo)出這一式子。若將替換為,將導(dǎo)致組合子中的作為的參數(shù)被立即求值。 Y 組合子是 lambda 演算中的一個(gè)概念,是任意函數(shù)的不動點(diǎn),在函數(shù)式編程中主要作用是 提供一種匿名函數(shù)的遞歸方式。 Y 組合子如下: $$ λf.(λx.f(x...
摘要:左子樹的加法運(yùn)算結(jié)果為,右子樹的減法運(yùn)算結(jié)果為。如圖,該圖說明了隨著每個(gè)新的字符被讀入后該解析樹的內(nèi)容和結(jié)構(gòu)。使函數(shù)走向基點(diǎn)的遞歸過程就是調(diào)用求值函數(shù)計(jì)算當(dāng)前節(jié)點(diǎn)的左子樹右子樹的值。最后,我們將在圖中創(chuàng)建的解析樹上遍歷求值。 解析樹 完成樹的實(shí)現(xiàn)之后,現(xiàn)在我們來看一個(gè)例子,告訴你怎么樣利用樹去解決一些實(shí)際問題。在這個(gè)章節(jié),我們來研究解析樹。解析樹常常用于真實(shí)世界的結(jié)構(gòu)表示,例如句子或數(shù)...
摘要:一個(gè)解決的辦法是從算法上解決,把遞歸算法改良成只依賴于少數(shù)狀態(tài)的迭代算法,然而此事知易行難,線性遞歸還容易,樹狀遞歸就難以轉(zhuǎn)化了,而且并不是所有遞歸算法都有非遞歸實(shí)現(xiàn)。 前言 眾所周知,遞歸函數(shù)容易爆棧,究其原因,便是函數(shù)調(diào)用前需要先將參數(shù)、運(yùn)行狀態(tài)壓棧,而遞歸則會導(dǎo)致函數(shù)的多次無返回調(diào)用,參數(shù)、狀態(tài)積壓在棧上,最終耗盡棧空間。 一個(gè)解決的辦法是從算法上解決,把遞歸算法改良成只依賴于少...
摘要:函數(shù)表達(dá)式是中的一個(gè)既強(qiáng)大又容易令人困惑的特性。函數(shù)表達(dá)式有幾種不同的語法形式。匿名函數(shù)的屬性是空字符竄。在把函數(shù)當(dāng)成值使用的情況下,都可以使用匿名函數(shù)。不過,這并不是匿名函數(shù)唯一的用途。不過我們可以使用命名函數(shù)表達(dá)式來達(dá)成相同的成果。 前言:最近在細(xì)讀Javascript高級程序設(shè)計(jì),對于我而言,中文版,書中很多地方翻譯的差強(qiáng)人意,所以用自己所理解的,嘗試解讀下。如有紕漏或錯(cuò)誤,會...
閱讀 2900·2021-11-23 09:51
閱讀 3422·2021-11-22 09:34
閱讀 3320·2021-10-27 14:14
閱讀 1521·2019-08-30 15:55
閱讀 3354·2019-08-30 15:54
閱讀 1081·2019-08-30 15:52
閱讀 1901·2019-08-30 12:46
閱讀 2860·2019-08-29 16:11