第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

尾調(diào)用優(yōu)化(Tail Call Optimization)

標(biāo)簽:
JavaScript
什么是尾调用
  • 尾调用指“函数尾调用”。
  • 尾调用是函数式编程的一个重要概念。
  • 尾调用就是某个函数最后一步是调用另一个函数

这就是一个尾调用。

// 函数 f 最后一步调用函数 g,这就是尾调用
function f(x) {
    return g(x);
}

尾调用不一定出现在函数尾部,只要是最后一步操作即可。

// x 等于 5 时,返回 m(x) 的结果,虽然位置不在函数尾部,但是
// 是最后一步操作
function f(x) {
    if (x > 0) {
       return m(x);
    }
    return n(x);
}
f (5) ;
尾调用优化

尾调用优化是对内存使用的优化,结果是节省内存,你可能察觉不到。

举个例子

function f() {
    let m = 1;
    let n = 2;
    return g(m + n);
}
f();

函数 f 最后一步调用函数 g。可以看到,函数 g 被调用时(即 g(3)),已经不依赖父函数 f 中的变量了,那么就可以将函数 f 在内存中占用的空间清除,这就是“尾调用优化”!

你可能想不到,在 ES6 之前,如果子函数运行在内存,那么父函数非得等到子函数运行结束、从内存清除后,才会从内存清除。

无法进行“尾调用优化”的例子
function addOne(a) {
    var one = 1;
    function innner(aa) {
         return aa + one;
    }
    innner(a);
}

函数 addOne 的最后一步,调用了内部定义的函数 innnerinnner 函数执行。但 innner 内部引用了外部变量 one,导致执行 innner 时,addOne 必然还在内存里。

这就无法进行“尾调用优化”了。

参考资料: 《ECMAScript 6 入门》之 尾调用优化,by 阮一峰

(完)

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
數(shù)據(jù)庫工程師
手記
粉絲
24
獲贊與收藏
286

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消