JavaScript(六)-函數

函數:定義函數

定義方式

第一種定義方式:可在後面定義前面調用.可提早調用數組

    function gg(){
      console.log("函數內部的代碼");
    }

第二種定義方式:必須先定義後面執行,提早調用報錯函數

    // b();//報錯 -- let定義的函數不能夠提早調用
    let b = function(){
      console.log("這是函數b");
    };
    //只能在定義以後調用
    b();

函數的做用域

一個變量起做用的區域:全局變量(全局做用域),局部變量(局部做用域)
做用域鏈:要使用某個變量的時候,先從自身做用域開始查找,本身有就用本身的,本身沒有再從父級做用域開始查找,依次類推,直到全局爲止。
1.不容許從父級做用域訪問子級做用域,容許從子級做用域訪問父級做用域,
2.做用域不一樣,變量名是能夠重複到的.
3.同級之間沒法訪問
    //全局變量
   let a = 10; function x(){     
 //局部變量 let a = 20; function y(){ console.log(a); } y(); } x(); console.log(a);

函數表達式

一般咱們須要定義函數以後,再才能用 函數名() 的形式自執行,函數表達式能夠直接在後面加小括號自執行執行。優化

開發單獨功能模塊,方便代碼後期整理,優化spa

    (function(){
      console.log("函數內部代碼");
    })();

    //其餘的函數表達式寫法
    (function(){
      console.log("函數表達式自執行2");
    }());

    +function(){
      console.log("函數表達式自執行3");
    }();

    -function(){
      console.log("函數表達式自執行4");
    }();

    ~function(){
      console.log("函數表達式自執行5");
    }();

    !function(){
      console.log("函數表達式自執行6");
    }();
    //輪播圖
    (function(){

    })();

    //選項卡
    (function(){

    })();

    //側邊欄
    (function(){

    })();

有名函數與匿名函數

   //有名函數 
    function gg(){
      console.log("函數內部的代碼");
    }*/

    //函數自執行
    gg();

    //充當事件函數  被執行(注不須要加(),只須要加函數名)
    document.onclick = gg;
   

   //匿名函數
//充當事件函數的時候,能夠用函數名字,也能夠直接寫一個匿名函數 document.onclick = function (){ console.log("這是一個匿名函數"); };
  
     //匿名函數不能單獨出現
     // function(){} //報錯
 

參數

實參   形參   不定參

實參:函數自執行時,小括號裏面傳入的數據;形參:函數定義時,小括號裏面寫的變量名;不定參:Arguments函數內部的僞數組,用於存儲着全部的實參集合;code

函數定義時()寫的是形參,函數執行()寫的是實參blog

函數內部有一個變量 Arguments,Arguments不定參記錄全部實參傳給形參的集合
注:當實參傳入形參不是一個數據時,自動轉換(尋找變量值運算), 當實參傳入一個函數時,形參自執行便可.
    //功能函數:求和
    function sum( a,b ){ //形參
      console.log(a,b,a + b);
    }

    sum( 3 , 4 );//實參
    sum( 3 , 5 );//實參
    sum( 3 , 10 );//實參

    //實參多 -- 沒有對應的形參來接收多的,可是正常運行不會出錯
    sum( 5 , 6 , 7 );

    //實參少 -- 沒有對應數據的形參就是默認值undefined
    sum( 2 );    
相關文章
相關標籤/搜索