成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

tolerious / 2790人閱讀

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

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

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

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

在函數(shù)對(duì)象中,有個(gè)屬性名為caller,這個(gè)屬性作為一個(gè)引用,保存著調(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)部,因?yàn)?bar.calller指向了調(diào)用bar的匿名函數(shù),所以執(zhí)行bar.caller就等于匿名函數(shù)的源代碼,同callee一樣的是,在ES5中訪問caller屬性會(huì)報(bào)錯(cuò)。

函數(shù)內(nèi)部除了以上容易混淆的屬性以外,還有些方法有時(shí)候也會(huì)讓人比較困惑,例如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兩個(gè)方法作用都是在特定的作用域上面調(diào)用函數(shù),換句話說,就是改變函數(shù)體內(nèi)this指向,在foo和bar函數(shù)中,我們利用call和apply將函數(shù)的this值綁定到add函數(shù)上,因此它們便可以對(duì)內(nèi)部的參數(shù)執(zhí)行add函數(shù)里面的加法操作。

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/84268.html

相關(guān)文章

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

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

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

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

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

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

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

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

    clasnake 評(píng)論0 收藏0
  • 7月份前端資源分享

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

    pingan8787 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<