1. 程式人生 > >js運用4

js運用4

重復 匿名 fine 繼續 通過 turn 種類 一個 break

---恢復內容開始---

1.函數 關鍵字function

復習

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

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

技術分享圖片

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

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

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

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

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

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

  結構語法

  function(){}

技術分享圖片

通過上圖我們可以發現,內存模塊只存在ver的變量名。而存在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和function運算

break終止單前程序

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

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

return 返回的

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

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

技術分享圖片

技術分享圖片

案例分析

技術分享圖片

技術分享圖片

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

函數內外的變量

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

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

  私有變量的種類

    1.在私有作用域的聲明的。

    2.通過函數傳參的叫私有變量。

 函數傳參 argument 參數

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

技術分享圖片

技術分享圖片

技術分享圖片

形參 定義上的參數

實參 執行上的參數

技術分享圖片

console.dir(fn)

---恢復內容結束---

js運用4