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

10.9號函數的定義

使用 聲明 減少 語法 不存在 win define 同時 function

  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);

10.9號函數的定義