1. 程式人生 > >js 10.19

js 10.19

win 技術分享 作用域 n) ons 有變 函數提升 重復 14.

  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(){} 匿名函數

技術分享圖片

3自調用

定義和調用同時完成

技術分享圖片

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

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

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

按需使用 可以提升性能 重復使用 減少代碼冗(rong 三聲)余。

函數調用的過程

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

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

技術分享圖片

案例分析

技術分享圖片

分析圖

技術分享圖片

技術分享圖片

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

技術分享圖片

分析圖

技術分享圖片

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

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

技術分享圖片

技術分享圖片

Break continue運算

Break 終止當前程序

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

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

return 返回的

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

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

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

函數內部的return 不影響函數內部的預解釋。

函數內外的變量

函數外的變量叫全局變量,函數內的變量叫私有變量。

看變量歸誰,看他在哪個作用域下聲明。

私有變量的種類

  1. 在私有作用域的聲明的。
  2. 通過函數傳參的叫私有變量。

函數傳參 arguments 參數

Function fn(a,b,c,d){} a b c d 叫參數

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

形參 定義上的參數

實參 執行上的參數

技術分享圖片

console.dir(fn)

js 10.19