1. 程式人生 > >函數,函數的四種定義,

函數,函數的四種定義,

最大 有關 向上 定義 復習 私有 UNC http 一個

函數

1.函數的關鍵字 function

復習

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

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

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

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

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

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

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

結構語法

function fn (){}

技術分享圖片

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

函數結構的註意。

技術分享圖片

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

函數定義的四種方式

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

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

技術分享圖片

3.自調用

定義和調用同時完成

技術分享圖片技術分享圖片

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

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

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

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

函數調用的過程,

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

然後執行函數裏的代碼塊

技術分享圖片

案例分析

技術分享圖片

分析圖

技術分享圖片

作用域鏈:函數內部的變量被使用時,首先會在自己的作用域下查找是否有這個變量,有就之間使用,沒有就會向他的父級查找,父級有就用父級的,父級沒有就會以此繼續向上查找指定window 為止,window有就使用沒有就是 is not defined。這種查找機制我們叫作用域鏈。

分析圖

技術分享圖片

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

break 和 continue 運算

break 終止當前程序

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

break 和continue 只能在循環語句中,如果條件語句下使用break 只能使用retrn。

return 返回值

每個函數都有一個返回值,如果函數人為return了,返回聲明就是什麽。

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

函數,函數的四種定義,