1. 程式人生 > >js第五天

js第五天

之前 定義 賦值 con 循環語句 分析 都在 有一個 提升

技術分享圖片

1.函數 關鍵字function

復習

var 是js的關鍵字,用於聲明變量,聲明在內存模塊完成,定義(=)是在執行模塊完成。

var可以在內存模塊提前(js代碼執行之前)完成所有的變量提升這個功能。

技術分享圖片

因為a 沒有帶var,所以不存在變量提升,瀏覽器會把他當做一個window的屬性。

function也是js的關鍵字,用於聲明和定義函數的,聲明和定義都在存儲模塊完成了。

function也是存儲模塊提前完成,所以有函數提升這個功能。

變量提升和函數提升 都叫預解釋。都是瀏覽器的。

2.函數的定義:函數:具有一定功能的代碼塊。

函數是通過function定義的,function後跟的是函數名。

結構方法

function fn(){}

技術分享圖片

通過上圖我們發現,內存模塊只存在var的變量名。而存在function整個代碼塊,因為聲明和定義同事完成。

函數結構的註意事項

技術分享圖片

函數的定義 通過function定義 function fn(){}

函數定義的四中方式

1.聲明是定義 function fn(){}

2.表達式定義 var an=function(){} 匿名函數

技術分享圖片

4.自調用

定義和調用同時完成

技術分享圖片

4.通過 對象的形式 var as=new Function(){}

函數調用 函數名() fn()

函數的最大優勢 會形成一個獨立的模塊,可按需使用,可以重復使用。

按需使用 可以提升性能 重復使用 減少代碼冗余。

函數調用過程

函數執行時會形成一個自己的私有作用域。最大的作用域時window(全局作用域)

然後執行函數裏面的代碼塊。

技術分享圖片

案例分析

技術分享圖片

分析圖

技術分享圖片

技術分享圖片

作用域鏈:函數內部變量的變量被使用時,首先會在自己的私有作用域下查找是否有這個變量,有就直接賦值,沒有就想他的上一級查找,父級有就用父級的,父級沒有就會依次向上查找直到window為止,window有就使用沒有就is not defined。這種查找機制我們叫作用域鏈

技術分享圖片

分析圖

技術分享圖片

函數歸屬誰,跟他在哪調用沒關系,而是在哪定義有關。

函數遞歸:函數內部調用自己

技術分享圖片

技術分享圖片

break和continue運算

break終止當前程序

continue跳出當前的程序,執行下一個

break和continue只能在循環語句中。如果條件語句想使用break只能使用return

return返回的

每個函數都有一個返回值如果函數任為return了,反回什麽是什麽。

如果沒有返回,結果就是undefined。並且return後面的代碼不再執行

js第五天