再探JS函數(shù)

函數(shù)是JS的核心概念脯爪,主要用來封裝語句碍侦,需要注意一下

細(xì)碎的小點(diǎn)

  • return語句,一旦return店印,后續(xù)的語句不會繼續(xù)執(zhí)行了冈在,不加return的話,函數(shù)默認(rèn)的返回值是undefined

有關(guān)參數(shù)的理解

函數(shù)不在意它本身到底接收多少參數(shù)按摘,不關(guān)心最后會使用多少參數(shù)包券。因?yàn)楹瘮?shù)只會接收一個數(shù)組纫谅,函數(shù)可以通過arguments對象來訪問這個參數(shù)數(shù)組。關(guān)于這個數(shù)組溅固,我現(xiàn)在知道這些:

arguments對象

這個數(shù)組其實(shí)是個對象付秕,如下:
javascript
var a = function () {var b= 1; var c = 0} //a是一個函數(shù)
typeof a.arguments // Object

但是為什么又說它是數(shù)組呢,因?yàn)樗旧砗軘?shù)組很像侍郭,可以通過方括號加數(shù)字的方法來訪問具體的參數(shù)询吴,同時還有數(shù)組對象有的length屬性。一個有趣的例子:
```javascript
function a (){
  console.log("hello" + arguments[0] + arguments[1]);
}
a("hao","xiang"); //hellohaoxiang

這樣子依然是有效的亮元,在函數(shù)執(zhí)行的時候猛计,通過arguments對象的length屬性可以知道被傳遞的參數(shù)個數(shù),還有個更有趣的例子爆捞,是關(guān)于arguments的同步性的:

function doAdd(num1,num2){
  arguments[1]=10;
  alert(arguments[0] + num2);
  }
  doAdd(1,1); //11奉瘤,arguments[1]和num2是同步的

傳遞參數(shù)

參數(shù)就是局部變量,對于函數(shù)來說煮甥,傳遞參數(shù)是按值的盗温,基本類型的很好理解,相當(dāng)于變量的復(fù)制苛秕。
對于引用類型來說肌访,還需要留意到此時依然是按值傳遞的,這個值依然是指引用的內(nèi)存地址值艇劫。
證明方法吼驶,需要先創(chuàng)建一個對象,傳遞函數(shù)中店煞,此時在函數(shù)內(nèi)部修改對象的屬性蟹演,此時內(nèi)外是一致的,因?yàn)樗麄兪且环N的一個對象
但是此時如果將參數(shù)重新初始化為兩一個對象顷蟀,那么也就是說此時參數(shù)已經(jīng)指向另一個變量了酒请,和之前的一切無關(guān)。

再探函數(shù)內(nèi)部的屬性

arguments屬性有一個叫做callee的指針鸣个,這個指針指向擁有這個arguments對象的函數(shù)羞反。主要用來接觸耦合,需要明確一下書上關(guān)于遞歸算法的例子

function fac (num) {
switch (num){
  case 1 :
  return 1;
  default: return num * arguments.callee(num-1);
}
}

函數(shù)的另外一個內(nèi)部屬性是this對象

this引用的是函數(shù)據(jù)以執(zhí)行的環(huán)境對象
具體的理解:
this是包含它的函數(shù)作為方法被調(diào)用是所屬的對象 = 包含它的函數(shù) + 作為方法被調(diào)用時 + 所屬的對象

重點(diǎn)內(nèi)容——函數(shù)的屬性和方法

apply()囤萤,這個方法表示在特定的作用域內(nèi)調(diào)用函數(shù)
與call()的區(qū)別在于call在使用時必須指定參數(shù)
bind()方法昼窗,這個方法可以用來創(chuàng)建一個新的實(shí)例,實(shí)例的this值會被綁定到傳給bind()的值上

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末涛舍,一起剝皮案震驚了整個濱河市澄惊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖掸驱,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肛搬,死亡現(xiàn)場離奇詭異,居然都是意外死亡毕贼,警方通過查閱死者的電腦和手機(jī)温赔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來帅刀,“玉大人让腹,你說我怎么就攤上這事远剩】勰纾” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵瓜晤,是天一觀的道長锥余。 經(jīng)常有香客問我,道長痢掠,這世上最難降的妖魔是什么驱犹? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮足画,結(jié)果婚禮上雄驹,老公的妹妹穿的比我還像新娘。我一直安慰自己淹辞,他們只是感情好医舆,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著象缀,像睡著了一般蔬将。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上央星,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天霞怀,我揣著相機(jī)與錄音,去河邊找鬼莉给。 笑死毙石,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的颓遏。 我是一名探鬼主播徐矩,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼州泊!你這毒婦竟也來了丧蘸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎力喷,沒想到半個月后刽漂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡弟孟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年贝咙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拂募。...
    茶點(diǎn)故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡庭猩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出陈症,到底是詐尸還是另有隱情蔼水,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布录肯,位于F島的核電站趴腋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏论咏。R本人自食惡果不足惜优炬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望厅贪。 院中可真熱鬧蠢护,春花似錦、人聲如沸养涮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽单寂。三九已至贬芥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宣决,已是汗流浹背蘸劈。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尊沸,地道東北人威沫。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像洼专,于是被迫代替她去往敵國和親棒掠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,238評論 0 4
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理屁商,服務(wù)發(fā)現(xiàn)烟很,斷路器,智...
    卡卡羅2017閱讀 134,696評論 18 139
  • 在js中,函數(shù)本身屬于對象的一種雾袱,因此可以定義恤筛、賦值,作為對象的屬性或者成為其他函數(shù)的參數(shù)芹橡。函數(shù)名只是函數(shù)這個對象...
    bjhu電net閱讀 544評論 0 5
  • 工廠模式類似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品毒坛,去做同樣的事情,實(shí)現(xiàn)同樣的效果;這時候需要使用工廠模式林说。簡單...
    舟漁行舟閱讀 7,777評論 2 17
  • 偶然的機(jī)會看到簡書煎殷,當(dāng)時不知道簡書,二了吧唧的問了度娘腿箩,然后就下載了app豪直,就想知道是什么軟件,根本沒想其他度秘《ド。可是...
    馬何木子閱讀 106評論 0 0