1. 程式人生 > >10.9號函式的定義

10.9號函式的定義

  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(){}  匿名函式
    1. 自呼叫

    定義和呼叫同時完成。

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

     

    函式呼叫 函式名()       fn()

    函式最大的優勢  會形成一個獨立的模組,可以按需使用,可以重複使用。

    按需使用  可以提升效能    重複使用 減少程式碼冗(rong 三聲)餘。

    函式呼叫的過程

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

    然後執行函式裡面的程式碼塊。

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

    函式歸屬誰,跟她在哪呼叫沒有關係,而是在哪定義有關。

    函式遞迴:函式內部內部呼叫自己

    Break 和continue運算

    Break 終止當前程式

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

    // console.log(a)
    // console.log(b)
    // var a=12;
    // b=12;
    // function fn(){
    // console.log(12)
    // }
    // fn()
    // function fn(){
    // console.log(123)
    // }
    // as()
    // var as=function(){
    // console.log(12)
    // }
    // var a=12;
    // function fn(){
    // console.log(a)
    // var a=144;
    // console.log(a)
    // }
    //
    function fn(){
    console.log(123);
    function ff(){
    console.log(52)
    }ff()
    }fn()
    // fn()
    // var sum=0;
    // var i=1;
    // function fn(){
    // sum=sum+i;
    // i++;
    // console.log(sum)
    // fn()
    // }
    // fn()
    // (function(){
    // console.log(412)
    // })()
    // !function(){
    // console.log(12)
    // }()
    var a = 123;
    function fun(){
    alert(a);
    a = 456;
    }
    fun();
    alert(a);