JS基礎(chǔ)(二)---函數(shù)正蛙、數(shù)組及對(duì)象

一、函數(shù)

函數(shù)的概念

函數(shù)乒验,也叫功能或方法锻全,函數(shù)將一段具備某項(xiàng)特殊功能的代碼段封裝成一個(gè)完整的結(jié)構(gòu)體。

函數(shù)的作用就是封裝一段功能代碼睹耐,可以被反復(fù)調(diào)用部翘,實(shí)現(xiàn)代碼的重用

函數(shù)的聲明

聲明語(yǔ)法:

function 函數(shù)名 (參數(shù)){
  函數(shù)的結(jié)構(gòu)體;
}

函數(shù)在聲明時(shí)窖梁,函數(shù)體不會(huì)執(zhí)行夹囚,只有在被調(diào)用的時(shí)候才會(huì)執(zhí)行

函數(shù)的調(diào)用

函數(shù)調(diào)用方式: 函數(shù)名(參數(shù)),形如:foo();

函數(shù)參數(shù): 專(zhuān)門(mén)接收函數(shù)執(zhí)行時(shí)所必須的數(shù)據(jù)的變量

函數(shù)的參數(shù)可以設(shè)置0個(gè)或者多個(gè)假哎,參數(shù)之間用逗號(hào)隔開(kāi)

函數(shù)的參數(shù)有兩種名稱(chēng):形參和實(shí)參,其本質(zhì)都是各種類(lèi)型的數(shù)據(jù)變量

形參:形式參數(shù)肪虎, 在函數(shù)定義中惧蛹,()內(nèi)部的參數(shù)叫做形參,用來(lái)接收函數(shù)調(diào)用時(shí)實(shí)參傳遞過(guò)來(lái)的數(shù)據(jù)

實(shí)參:實(shí)際參數(shù)迅腔,在函數(shù)調(diào)用中靠娱,()中的參數(shù)就是實(shí)參像云,用來(lái)傳遞數(shù)據(jù)給形參使用

arguments對(duì)象

arguments對(duì)象是函數(shù)的一個(gè)內(nèi)置屬性,arguments對(duì)象中存儲(chǔ)著實(shí)參的所有值,是一個(gè)類(lèi)數(shù)組對(duì)象双抽,能夠通過(guò)遍歷進(jìn)行取值

函數(shù)的返回值

函數(shù)在執(zhí)行完畢后牍汹,會(huì)返回一個(gè)執(zhí)行結(jié)果,通過(guò)return關(guān)鍵字實(shí)現(xiàn)函數(shù)的返回值

如果不寫(xiě)return 語(yǔ)句嫁蛇,則函數(shù)默認(rèn)返回undefined
如果存在return 語(yǔ)句露该,則函數(shù)返回值為return 后面的數(shù)據(jù)

其中,如果函數(shù)內(nèi)部執(zhí)行了一個(gè)return語(yǔ)句抑党,則函數(shù)體之后的代碼將不會(huì)再執(zhí)行

作用域與作用域鏈

變量的可用范圍撵摆,scope
本質(zhì)其實(shí)是一個(gè)存儲(chǔ)多個(gè)變量的對(duì)象

js中存在兩種作用域:全局作用域和函數(shù)作用域
全局作用域:專(zhuān)門(mén)保存全局變量的對(duì)象
函數(shù)作用域:專(zhuān)門(mén)保存函數(shù)內(nèi)部的局部變量的對(duì)象
局部變量:只有在函數(shù)調(diào)用時(shí)的函數(shù)內(nèi)部才能使用
全局變量:在任何時(shí)候的任何位置都可被訪問(wèn)

作用域鏈:在對(duì)變量取值時(shí)特铝,都是從當(dāng)前定義變量的函數(shù)開(kāi)始查找壹瘟,如果當(dāng)前沒(méi)有定義該變量鳄逾,則從上層查找,直到查找到全局作用域澄者,這種查找過(guò)程中形成的鏈?zhǔn)浇Y(jié)構(gòu)请琳,就是作用域鏈

函數(shù)聲明提前問(wèn)題

在正式執(zhí)行程序前俄精,都會(huì)先對(duì)var 聲明的變量 和 function 聲明的函數(shù)進(jìn)行預(yù)解析,將變量和函數(shù)集中到當(dāng)前作用域的頂部進(jìn)行集中聲明嫌套,其中圾旨,先提升var 聲明的變量,再提升function 聲明的函數(shù)

賦值操作則留在原地

預(yù)解析完成后痹筛,再根據(jù)新的代碼順序廓鞠,從上往下按照既定的規(guī)律執(zhí)行js

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

函數(shù)表達(dá)式也是函數(shù)聲明的另一種方式,寫(xiě)法:

var  函數(shù)名 = function(參數(shù)){
  函數(shù)體滋早;
  return 返回值
}

使用函數(shù)表達(dá)式的方式進(jìn)行函數(shù)聲明時(shí)砌们,在預(yù)解析過(guò)程中怨绣,就不會(huì)進(jìn)行函數(shù)聲明提升了,而是進(jìn)行變量聲明提升

立即執(zhí)行函數(shù) IIFE

IIFE:Immediately-Invoked-Function-Expression篮撑,即時(shí)調(diào)用的函數(shù)表達(dá)式赢笨,表示在函數(shù)定義時(shí)就立即調(diào)用

要實(shí)現(xiàn)IIFE驮吱,必須將函數(shù)轉(zhuǎn)換為表達(dá)式形式萧吠,才能實(shí)現(xiàn)自調(diào)用

方法: 通過(guò)一定的手段纸型,讓函數(shù)參與特定的運(yùn)算,即在函數(shù)前加一些運(yùn)算符除破,如:
數(shù)學(xué)運(yùn)算符: +琼腔、 -、 ()
邏輯運(yùn)算符: 光坝!
IIFE最常用的就是通過(guò)加 () 運(yùn)算符來(lái)實(shí)現(xiàn)甥材,如:

(function(i){
  console.log(i);     //  1
})(1);

二、數(shù)組

多個(gè)數(shù)據(jù)或變量按一定順序保存在一個(gè)集合中土铺,則稱(chēng)這個(gè)集合為數(shù)組

創(chuàng)建數(shù)組

創(chuàng)建數(shù)組的4種方式

  • 創(chuàng)建空數(shù)組
    var 數(shù)組名 = []板鬓; --->在js中,數(shù)組的字面量就是 []

  • 創(chuàng)建數(shù)組的同時(shí)俭令,初始化數(shù)組中的每個(gè)元素
    var 數(shù)組名 = [值1, 值2, 值3, ...];

  • 創(chuàng)建空數(shù)組
    var 數(shù)組名 = new Array(n)部宿;
    這種方法,創(chuàng)建一個(gè)數(shù)組類(lèi)型的對(duì)象赫蛇,n 表示初始化元素的個(gè)數(shù)雾叭,省略則表示空數(shù)組织狐,不省略則表示創(chuàng)建一個(gè)具有n個(gè)undefined值的數(shù)組

  • 創(chuàng)建數(shù)組同時(shí)初始化數(shù)組元素
    var 數(shù)組名 = new Array(值1, 值2, 值3, ...)

其中 new Array 在一定情況下存在歧義筏勒,比如:new Array(3); 代表3個(gè)元素值為undefined的數(shù)組旺嬉,而不是元素值為3的數(shù)組。

獲取數(shù)組元素

通過(guò)數(shù)組的下標(biāo) i 來(lái)獲取數(shù)組的每一個(gè)元素捐顷,即 數(shù)組名[i] = 值
其中迅涮,i 從0開(kāi)始計(jì)算设易,按照整數(shù)開(kāi)始排序,如 0,1,2,3戏溺,...

數(shù)組的長(zhǎng)度

length屠尊,能記錄數(shù)組的數(shù)據(jù)總長(zhǎng)度,如 數(shù)組名.length

數(shù)組的長(zhǎng)度與數(shù)組最后一項(xiàng)的下標(biāo)存在一定關(guān)系托享,即最后一項(xiàng)的下標(biāo)等于數(shù)組的length-1

數(shù)組的長(zhǎng)度也不是固定的浸赫,可以發(fā)生更改既峡,當(dāng)數(shù)組的個(gè)數(shù)增加時(shí)信认,length值自動(dòng)跟著改變

數(shù)組length屬性有兩個(gè)固定用法

  • 獲取最后一個(gè)元素值:arr[arr.length - 1]
  • 向數(shù)組末尾追加一個(gè)新元素: arr[arr.length] = 新值袱贮;

數(shù)組的遍歷

主要是根據(jù)數(shù)組的下標(biāo)在0 到 length - 1 之間迄沫,用for循環(huán)來(lái)對(duì)數(shù)組的每一個(gè)元素進(jìn)行訪問(wèn)卦方。


關(guān)聯(lián)數(shù)組

上面所講的是常規(guī)的索引數(shù)組,還有一種數(shù)組叫關(guān)聯(lián)數(shù)組困后,可自定義下標(biāo)摇予,

創(chuàng)建關(guān)聯(lián)數(shù)組的方法:
1、第一步宁昭,先創(chuàng)建空數(shù)組酗宋,var arr = [];
2、第二步寂曹,再向數(shù)組中添加元素回右,arr[key] = value; 如:arr[''name''] = "張三"翔烁,arr["age"] =30;

其中,key為字符串蹬屹, length屬性無(wú)效慨默,永遠(yuǎn)為0,同時(shí)憔杨,關(guān)聯(lián)數(shù)組中的key 不能重復(fù)蒜胖,如果訪問(wèn)不存在的下標(biāo)元素台谢,也不會(huì)保存岁经,返回undefined值

遍歷關(guān)聯(lián)數(shù)組:for (var key in arr) { } 結(jié)構(gòu)


三、對(duì)象

對(duì)象的基本概念

JS中的對(duì)象是無(wú)序?qū)傩缘募戏兀瑢傩钥梢允腔局怠⒑瘮?shù)等蒂胞。對(duì)象的結(jié)構(gòu)可以看成是一種鍵值對(duì)的形式条篷,值可以是數(shù)據(jù)和函數(shù)赴叹。

對(duì)象的創(chuàng)建

創(chuàng)建對(duì)象的最簡(jiǎn)單的方式:使用對(duì)象字面量賦值給變量,類(lèi)似數(shù)組

對(duì)象的字面量語(yǔ)法: {}涨椒,內(nèi)部可以存放多條數(shù)據(jù)绽媒,數(shù)據(jù)之間用逗號(hào)隔開(kāi)些椒,每條數(shù)據(jù)是以鍵值對(duì)的形式存在,即 k(屬性名): v(屬性值赢乓,值可以是任意類(lèi)型的數(shù)據(jù)石窑,簡(jiǎn)單數(shù)據(jù)類(lèi)型、函數(shù)躺屁、對(duì)象)经宏,如:

var obj = {
  k1: v1,
  k2: v2,
  k3: v3
};

在對(duì)象中,特征耐亏,用屬性表示广辰, 行為,則用方法表示

對(duì)象方法和屬性的調(diào)用

在調(diào)用對(duì)象的屬性時(shí)李根,有兩種形式:
obj.屬性名 或者 obj["屬性名"]几睛,如果屬性是個(gè)變量,則只能使用 [] 的形式表示冀续,即 obj[屬性]

在調(diào)用對(duì)象的方法時(shí),需要在方法名后加()執(zhí)行必峰,即 obj.fn()

對(duì)象的遍歷

可以將對(duì)象看成是一種鍵值對(duì)形式的數(shù)據(jù)結(jié)構(gòu)洪唐,在遍歷對(duì)象時(shí),類(lèi)似數(shù)組吼蚁,通過(guò) for in 循環(huán)凭需,根據(jù)屬性名遍歷出每一項(xiàng)對(duì)應(yīng)的屬性值,即:

for(var key in obj){
  var value = obj[key];
  ...
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肝匆,一起剝皮案震驚了整個(gè)濱河市粒蜈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌旗国,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件能曾,死亡現(xiàn)場(chǎng)離奇詭異度硝,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)寿冕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)蕊程,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人驼唱,你說(shuō)我怎么就攤上這事藻茂。” “怎么了玫恳?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵辨赐,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我京办,道長(zhǎng)掀序,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任臂港,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘审孽。我一直安慰自己县袱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布佑力。 她就那樣靜靜地躺著式散,像睡著了一般。 火紅的嫁衣襯著肌膚如雪打颤。 梳的紋絲不亂的頭發(fā)上暴拄,一...
    開(kāi)封第一講書(shū)人閱讀 52,268評(píng)論 1 309
  • 那天,我揣著相機(jī)與錄音编饺,去河邊找鬼乖篷。 笑死,一個(gè)胖子當(dāng)著我的面吹牛透且,可吹牛的內(nèi)容都是我干的撕蔼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼秽誊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鲸沮!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起锅论,我...
    開(kāi)封第一講書(shū)人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤讼溺,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后最易,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體怒坯,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年耘纱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了敬肚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡束析,死狀恐怖艳馒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情员寇,我是刑警寧澤弄慰,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站蝶锋,受9級(jí)特大地震影響陆爽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扳缕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一慌闭、第九天 我趴在偏房一處隱蔽的房頂上張望别威。 院中可真熱鬧,春花似錦驴剔、人聲如沸省古。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)豺妓。三九已至,卻和暖如春布讹,著一層夾襖步出監(jiān)牢的瞬間琳拭,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工描验, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留白嘁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓挠乳,卻偏偏與公主長(zhǎng)得像权薯,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子睡扬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

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