最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

千鋒教育JavaScript全套視頻教程(10天學(xué)會(huì)Js,前端javascrip

2023-07-21 09:30 作者:何其如  | 我要投稿

函數(shù)--function

聲明式函數(shù)

聲明式函數(shù)在函數(shù)定義之前 可以 調(diào)用

console.log(fn1); // ? fn1(){console.log('定義了一個(gè)聲明式函數(shù)fn1,這是fn1函數(shù)內(nèi)部');}

fn1();

賦值式函數(shù)

賦值式函數(shù)在函數(shù)賦值給變量之前 無(wú)法調(diào)用,如果調(diào)用會(huì)報(bào)錯(cuò)

因?yàn)橘x值式函數(shù)是將函數(shù)賦值給了一個(gè)變量,而變量在聲明之前訪問(wèn)結(jié)果是undefined

所以在將函數(shù)賦值給變量之前,這個(gè)變量的值是undefined,不是函數(shù),所以無(wú)法調(diào)用

函數(shù)

函數(shù) 是一段有名字的代碼塊,完成特定功能的代碼塊

函數(shù)可以減少代碼冗余,方便維護(hù)開發(fā)

特點(diǎn):一次定義,多次使用

函數(shù)的四要素

函數(shù)名 --- 函數(shù)的命名規(guī)則 同 變量的命名規(guī)則

函數(shù)體

函數(shù)的參數(shù)

// 形參 --- 形式參數(shù)

// 實(shí)參 --- 實(shí)際參數(shù)

// 返回值

// 注意:

// 函數(shù)如果不調(diào)用,內(nèi)部的代碼不會(huì)執(zhí)行,只有調(diào)用函數(shù),內(nèi)部代碼才會(huì)自行

函數(shù)的定義

聲明式函數(shù) --- 普通函數(shù)

通過(guò)function關(guān)鍵字定義函數(shù),并且給函數(shù)起名

function 函數(shù)名(){

函數(shù)體

}


// 函數(shù)的返回值 return

// 在函數(shù)內(nèi)部聲明的變量在函數(shù)外部訪問(wèn)不到,只能在函數(shù)內(nèi)部訪問(wèn)

// 如果我們需要在函數(shù)外部使用函數(shù)內(nèi)部所產(chǎn)生的值,如果使用

// 就可以利用 函數(shù)的返回值 實(shí)現(xiàn)

// 函數(shù)執(zhí)行完之后必須有一個(gè)結(jié)果,這個(gè)結(jié)果叫做:返回值。

// 使用 return 關(guān)鍵字來(lái)執(zhí)行函數(shù)的返回值。

// 在函數(shù)內(nèi)部 return 關(guān)鍵字 后面跟的什么那么這個(gè)函數(shù)的返回值就是什么


// return 關(guān)鍵字

// return 關(guān)鍵字 除了可以返回值以外還要一個(gè)作用

// 會(huì) 終止函數(shù)的執(zhí)行

// 在函數(shù)內(nèi)部 只要執(zhí)行了 return 那么這個(gè)函數(shù)就會(huì)停止執(zhí)行,

// 即使后面還有代碼也不會(huì)再執(zhí)行了


// 如果在函數(shù)內(nèi)部沒(méi)有 return 或者 return后面沒(méi)有值,函數(shù)的返回值就是 undefined

變量和函數(shù)

預(yù)解析-變量和函數(shù)的提升

01js運(yùn)行的代碼分為三個(gè)階段

預(yù)編譯

// 檢查代碼是否存在語(yǔ)法上的錯(cuò)誤

// 瀏覽器幫我們做,所做的事情就是基本的語(yǔ)法檢查,

// 除了給我們報(bào)錯(cuò)時(shí),看不見摸不著

預(yù)解析

// 瀏覽器幫我們做,所做的事情就是變量和函數(shù)的提升,

// 對(duì)我們程序中使用var聲明的變量和使用function定義的函數(shù)進(jìn)行預(yù)解析(提升)工作。

執(zhí)行階段

// 從上往下逐行執(zhí)行js代碼

// 注意:

// 對(duì)于函數(shù)在沒(méi)有調(diào)用執(zhí)行時(shí)是不會(huì)進(jìn)入函數(shù)內(nèi)部的

// 只有在函數(shù)被調(diào)用執(zhí)行時(shí)才會(huì)進(jìn)入函數(shù)內(nèi)部

// 對(duì)函數(shù)內(nèi)部的進(jìn)行 預(yù)編譯---預(yù)解析---執(zhí)行階段

02變量的提升

js會(huì)針對(duì)所有使用 var關(guān)鍵字聲明的變量進(jìn)行提升,提升到當(dāng)前作用域的最頂端

針對(duì)變量的提升,只會(huì)提升聲明部分,不會(huì)提升賦值部分

// 因?yàn)樽兞柯暶髁藳](méi)有賦值,結(jié)果就是undefined,所以在賦值之前訪問(wèn)結(jié)果都是undefined

變量名和函數(shù)名重名時(shí)候如何執(zhí)行

// 當(dāng) 變量名 和 函數(shù)名 重名時(shí)

在 提升階段 函數(shù)優(yōu)先

// 在這個(gè)名字的變量聲明賦值之前,訪問(wèn)這個(gè)名字,訪問(wèn)到的都是函數(shù)

在 執(zhí)行階段 變量?jī)?yōu)先

// 在這個(gè)名字的變量聲明賦值之后,訪問(wèn)這個(gè)名字,訪問(wèn)到的都是變量

變量的作用域

// 所謂的變量的作用域就是指變量能夠起作用的范圍

// 根據(jù)變量能夠起作用的范圍,我們將變量分為 全局變量 和 局部變量

全局變量

// 全局變量的作用域是 全局作用域

// 定義在函數(shù)外部,在頁(yè)面的任何位置都能正常訪問(wèn)的變量

局部變量

// 局部變量的作用域是 局部作用域

// 定義在函數(shù)內(nèi)部,只能在該函數(shù)內(nèi)部訪問(wèn)的變量

全局變量和局部變量重名時(shí)

當(dāng) 全局變量 和 局部變量 重名時(shí)

在 函數(shù)外部 訪問(wèn)到的是 全局變量,因?yàn)榫植孔兞吭谌种性L問(wèn)不到

在 函數(shù)內(nèi)部 優(yōu)先訪問(wèn)到的是 局部變量

// 在 函數(shù)內(nèi)部 優(yōu)先訪問(wèn)到的是 局部變量

// 如果 函數(shù)內(nèi)部沒(méi)有這個(gè)名字的局部變量,才會(huì)訪問(wèn)全局變量

變量的作用域鏈

訪問(wèn)變量時(shí)

首先在自身的作用域中查找,如果有就使用

沒(méi)有就往外層作用域查找,如果有就使用

沒(méi)有就繼續(xù)往外層作用域查找,一直會(huì)查到全局作用域

// 當(dāng)變量賦值沒(méi)有var時(shí)

// 會(huì)去在上一個(gè)作用域中找【同名&帶var】

// 找到了 - 直接修改

// 找不到 - 在作用域鏈上找

// 一直找到頂級(jí)全局作用域

// 找到了 - 直接修改

// 找不到 - 自己創(chuàng)建修改(創(chuàng)建一個(gè)全局變量)

遞歸函數(shù)

// 遞歸 本質(zhì)上是一種算法,是一種程序調(diào)用自身的編程技巧。

特點(diǎn):函數(shù)調(diào)用自身

和循環(huán)非常類似(重復(fù)計(jì)算執(zhí)行)。所以遞歸也和循環(huán)一樣,需要一個(gè)出口

// 雖然遞歸和循環(huán)很像,但是遞歸不可以代替循環(huán)

// - 性能不如循環(huán)

// - 內(nèi)存占用過(guò)高(非常致命)

// - 遞歸次數(shù)必須預(yù)期收斂

千鋒教育JavaScript全套視頻教程(10天學(xué)會(huì)Js,前端javascrip的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
镇沅| 渝北区| 临清市| 昭平县| 阜新| 宾川县| 会同县| 中西区| 正阳县| 攀枝花市| 黄平县| 台南市| 大石桥市| 平舆县| 璧山县| 长汀县| 永春县| 古浪县| 南投县| 峨山| 大城县| 商水县| 赤壁市| 翁牛特旗| 电白县| 卢龙县| 楚雄市| 大安市| 搜索| 芮城县| 江孜县| 政和县| 宝丰县| 五莲县| 长丰县| 都昌县| 枞阳县| 临高县| 资源县| 九龙坡区| 张家川|