国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript中函數(shù)紀(jì)要(二)

tolerious / 2784人閱讀

摘要:和方法大作用致相同,不同的方法接受的參數(shù),必須要明確所有要處理的參數(shù),也就是說,參數(shù)必須要逐個列舉,而方法可以選擇數(shù)組作為參數(shù),因此可以在具體的環(huán)境中,看看是選擇還是方法。

在函數(shù)內(nèi)部有著一個名叫arguments的類數(shù)組對象,內(nèi)部包含著傳入函數(shù)的所有參數(shù),在arguments對象中,有一個名叫callee的屬性,其作用可見下面這個階乘的栗子:

function factorial(num){
  if(num<=1){
    return 1;
  }else{
    return num*factorial(num-1);
    //這里也可以寫成如下方式
    return num*arguments.callee(num-1);
  }
}
console.log(factorial(5))//120

可以看到的是,arguments.callee這個屬性作為一個指針指向了擁有arguments對象的函數(shù),也可以認(rèn)為是當(dāng)前正在執(zhí)行的函數(shù),而且可以消除與函數(shù)名factorial的耦合,不過值得注意的是,在ES5的嚴(yán)格模式下,調(diào)用arguments.callee方法會報錯。

函數(shù)內(nèi)部還有一個對象,就是我們所熟悉的this對象,this對象引用的是函數(shù)執(zhí)行的環(huán)境對象,簡單來說,this總是指向函數(shù)的直接調(diào)用者,而非間接調(diào)用者,在對象中,如果有new關(guān)鍵字,this指向new出來的那個對象。

在函數(shù)對象中,有個屬性名為caller,這個屬性作為一個引用,保存著調(diào)用當(dāng)前函數(shù)的其他函數(shù)的引用,如下

(function(){
  bar();//function (){bar();}
})();
function bar(){
  console.log(bar.caller)//arguments.callee.caller
}

可以看到的是,匿名函數(shù)內(nèi)部調(diào)用了bar函數(shù),在bar函數(shù)內(nèi)部,因為 bar.calller指向了調(diào)用bar的匿名函數(shù),所以執(zhí)行bar.caller就等于匿名函數(shù)的源代碼,同callee一樣的是,在ES5中訪問caller屬性會報錯。

函數(shù)內(nèi)部除了以上容易混淆的屬性以外,還有些方法有時候也會讓人比較困惑,例如call跟apply,show the code

function add(a,b){
  return a+b;
}
function foo(a,b){
  console.log(add.call(this,a,b))
}
function bar(a,b){
  console.log(add.apply(this,[a,b]))
}
foo(20,20)//40
bar(20,20)//40

可以看到的是,call和apply兩個方法作用都是在特定的作用域上面調(diào)用函數(shù),換句話說,就是改變函數(shù)體內(nèi)this指向,在foo和bar函數(shù)中,我們利用call和apply將函數(shù)的this值綁定到add函數(shù)上,因此它們便可以對內(nèi)部的參數(shù)執(zhí)行add函數(shù)里面的加法操作。

call和apply方法大作用致相同,不同的方法接受的參數(shù),call必須要明確所有要處理的參數(shù),也就是說,參數(shù)必須要逐個列舉,而apply方法可以選擇數(shù)組作為參數(shù),因此可以在具體的環(huán)境中,看看是選擇call還是apply方法。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/84268.html

相關(guān)文章

  • JavaScript函數(shù)紀(jì)要(一)

    摘要:中函數(shù)是一等公民,所有的函數(shù)實際上是一個對象,與其他引用類型一樣擁有著屬性和方法,也可以被外界或者自身調(diào)用,也可以像傳遞參數(shù)一樣將函數(shù)傳遞給另一個函數(shù)。中函數(shù)沒有重載的概念,當(dāng)定義兩個同名函數(shù)的時候,前一個函數(shù)會被覆蓋掉,舉個栗子。 JavaScript中函數(shù)是一等公民,所有的函數(shù)實際上是一個Function對象,與其他引用類型一樣擁有著屬性和方法,也可以被外界或者自身調(diào)用,也可以像傳...

    plus2047 評論0 收藏0
  • JavaScript 字符串實用常操紀(jì)要

    摘要:另外如果為負(fù)數(shù),則表示從字符串尾部開始算起。將要搜尋的子字符串。從當(dāng)前字符串的哪個索引位置開始搜尋子字符串默認(rèn)為。否則則會返回一個數(shù)組,數(shù)組中存放所有符合要求的子字符串,并且沒有和屬性。 原文鏈接 JavaScript 字符串用于存儲和處理文本。因此在編寫 JS 代碼之時她總?cè)缬半S形,在你處理用戶的輸入數(shù)據(jù)的時候,在讀取或設(shè)置 DOM 對象的屬性時,在操作 Cookie 時,在轉(zhuǎn)換各種...

    Harpsichord1207 評論0 收藏0
  • 極簡爬蟲攻防戰(zhàn)紀(jì)要

    摘要:極簡爬蟲攻防戰(zhàn)紀(jì)要爬蟲是構(gòu)建搜索引擎的基礎(chǔ)負(fù)責(zé)抓取網(wǎng)頁信息并對網(wǎng)頁識別分類及過濾。爬蟲方終于鎖定了第一場戰(zhàn)役的勝局由于斷崖式技術(shù)的出現(xiàn),反爬方在瀏覽器識別戰(zhàn)役上望風(fēng)披靡。經(jīng)過反爬方的精心運作,逐漸有效削弱了敵方的攻勢。 極簡爬蟲攻防戰(zhàn)紀(jì)要 ? ??爬蟲是構(gòu)建搜索引擎的基礎(chǔ), 負(fù)責(zé)抓取網(wǎng)頁信息并對網(wǎng)頁識別、分類及過濾。我們熟識的電商、搜索、新聞及各大門戶網(wǎng)站都有強大的爬蟲集群在每...

    elliott_hu 評論0 收藏0
  • PHPExcel初學(xué)紀(jì)要

    摘要:流程創(chuàng)建一個文件獲取當(dāng)前的活動標(biāo)簽通過行列坐標(biāo)獲取單元格,并向其插入數(shù)據(jù)這里有種方式生成文件并輸入代碼預(yù)覽等價于除非是根目錄設(shè)置當(dāng)前腳本所在目錄實例化類獲取當(dāng)前活動標(biāo)簽填充數(shù)據(jù)方式一姓名性別年齡射可可男男男填充數(shù) 流程 創(chuàng)建一個excel文件 獲取當(dāng)前的活動sheet標(biāo)簽 通過行列坐標(biāo)獲取單元格,并向其插入數(shù)據(jù)(這里有2種方式) 生成文件并輸入showImg(https://seg...

    clasnake 評論0 收藏0
  • 7月份前端資源分享

    摘要:更多資源請文章轉(zhuǎn)自月份前端資源分享的作用數(shù)組元素隨機化排序算法實現(xiàn)學(xué)習(xí)筆記數(shù)組隨機排序個變態(tài)題解析上個變態(tài)題解析下中的數(shù)字前端開發(fā)筆記本過目不忘正則表達(dá)式聊一聊前端存儲那些事兒一鍵分享到各種寫給剛?cè)腴T的前端工程師的前后端交互指南物聯(lián)網(wǎng)世界的 更多資源請Star:https://github.com/maidishike... 文章轉(zhuǎn)自:https://github.com/jsfr...

    pingan8787 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<