js函數(shù)與函數(shù)編程式的理解

函數(shù)在實(shí)際開(kāi)發(fā)應(yīng)用當(dāng)中,大概分為普通函數(shù)/匿名函數(shù)/自執(zhí)行函數(shù)/構(gòu)造函數(shù)/其中普通函數(shù)分為函數(shù)表達(dá)式,函數(shù)聲明兩種。

在javascript當(dāng)中,聲明有兩種聲明方式,第一種是var變量聲明,第二種就是函數(shù)function聲明,在執(zhí)行上下文,創(chuàng)建變量對(duì)象的時(shí)候,函數(shù)聲明的優(yōu)先級(jí)比變量聲明要高,所以在執(zhí)行上下文當(dāng)中,無(wú)論在什么位置聲明了函數(shù),我們都可以直接使用。

函數(shù)表達(dá)式

函數(shù)表達(dá)式語(yǔ)法:var fn = function(){};

是將一個(gè)函數(shù)賦值給一個(gè)變量聲明,在執(zhí)行上下文的時(shí)候,我們應(yīng)該以變量聲明的方式去判斷函數(shù)表達(dá)式

使用var聲明運(yùn)行了兩布

var fn = undefined ?// 聲明變量fn = undefined

fn = function(){} ?//將值賦給變量

因?yàn)楹瘮?shù)表達(dá)式與函數(shù)聲明的聲明方式不一樣,所有有一點(diǎn)聲明上的差異,在使用方式上面并無(wú)不同。

一般使用的場(chǎng)景為給函數(shù)添加方法,給構(gòu)造函數(shù)加方法之類的。

匿名函數(shù)

匿名函數(shù)語(yǔ)法:function(){}

匿名函數(shù)故名意義,就是一個(gè)沒(méi)有名字的函數(shù),使用場(chǎng)景多作為一個(gè)參數(shù)傳給函數(shù)

var fn = function(bar,img){

return bar + img

}

fn(function(){

return 1;

},30)

在以上的例子當(dāng)中,將一個(gè)匿名函數(shù)作為參數(shù)傳給了fn函數(shù)表達(dá)式。

在執(zhí)行上下文創(chuàng)建的時(shí)候,匿名函數(shù)作為anguments對(duì)象保存在了fn變量對(duì)象當(dāng)中

這個(gè)方式因?yàn)楹瘮?shù)其實(shí)是在別動(dòng)函數(shù)當(dāng)中執(zhí)行,所以也叫回調(diào)函數(shù);

自執(zhí)行函數(shù)與塊級(jí)作用域以及模塊化

因?yàn)閖s沒(méi)有塊級(jí)作用域,所以我們一班用一個(gè)自執(zhí)行函數(shù)來(lái)模仿一個(gè)塊級(jí)作用域來(lái)提供一個(gè)獨(dú)立的執(zhí)行上下文,加上閉包,我們就可以將其模塊化。

一個(gè)模塊包括:私有變量,私有方法,公用變量,公用方法;

根據(jù)作用域鏈的單向訪問(wèn),我們可以很輕易的創(chuàng)建私有變量和私有方法。

而公用變量和方法,我們可以根據(jù)閉包的特性來(lái)做,例如


這是例子

函數(shù)編程式

函數(shù)可以賦值給其他變量,也可以作為一個(gè)參數(shù)傳給其他函數(shù),也可以作為其他函數(shù)的返回值

只用表達(dá)式不用語(yǔ)句

表達(dá)式是一個(gè)單純的運(yùn)算過(guò)程,結(jié)果是肯定會(huì)返回值的;

而語(yǔ)句是一個(gè)過(guò)程,是沒(méi)有值的

函數(shù)編程式要求只用表達(dá)式不用語(yǔ)句

沒(méi)有副作用

副作用的意思是函數(shù)內(nèi)部與外部進(jìn)行互動(dòng),比方說(shuō)修改了外部變量的值

函數(shù)編程式強(qiáng)調(diào)沒(méi)有副作用,意思是函數(shù)要保持獨(dú)立,功能就是返回一個(gè)新的值,不會(huì)去修改不關(guān)于它的任何東西,

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別 (*)解析器會(huì)率先讀取函數(shù)聲明,并使其在執(zhí)行任何代碼之前可以訪問(wèn);函數(shù)表達(dá)式則必須...
    coolheadedY閱讀 448評(píng)論 0 1
  • 工廠模式類似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品,去做同樣的事情,實(shí)現(xiàn)同樣的效果;這時(shí)候需要使用工廠模式。簡(jiǎn)單...
    舟漁行舟閱讀 8,131評(píng)論 2 17
  • 縱觀JavaScript中所有必須需要掌握的重點(diǎn)知識(shí)中,函數(shù)是我們?cè)诔鯇W(xué)的時(shí)候最容易忽視的一個(gè)知識(shí)點(diǎn)。在學(xué)習(xí)的過(guò)程...
    這波能反殺閱讀 30,516評(píng)論 109 288
  • 第一部分 準(zhǔn)入訓(xùn)練 第1章 進(jìn)入忍者世界 js開(kāi)發(fā)人員通常使用js庫(kù)來(lái)實(shí)現(xiàn)通用和可重用的功能。這些庫(kù)需要簡(jiǎn)單易用,...
    如201608閱讀 1,409評(píng)論 1 2
  • 《煉金術(shù)師》,又是一本描寫(xiě)金融危機(jī)的書(shū)籍。本書(shū)強(qiáng)調(diào)ZF干預(yù)的必要性,如果缺乏合理的管控,經(jīng)濟(jì)緊縮、通貨膨脹會(huì)給國(guó)民...
    FrankCoach閱讀 539評(píng)論 0 0

友情鏈接更多精彩內(nèi)容