前端之JavaScript進階

來源:互聯網
上載者:User

標籤:object   order   es6   array   info   區別   對象   資料類型   作用   

 一. 函數

  JavaScript中的函數和python中的函數非常類似,只是在定義方式上有部分區別.

  1. 定義函數 ;

  函數只能返回一個值,如果要返回多個值,只能將其放在數組或對象中返回.

    ①. 普通函數 :

      function f1 ()  {

        console.log ("hello world");    

      }

      f1();  //調用方法

    ②. 帶參數的函數 :

      function f2 (a,b)  {

        console.log(arguments);  //內建arguments對象

        console.log(arguments.length);

        console.log(a,b);

      }

      f2(a,b);  //調用方法

    ③. 帶傳回值的函數 :

      function sum(a,b)  {

        return a+b;

      }

      sum(a,b);  //調用方法

    ④. 匿名函數 :

      var sum = function(a,b)  {

        return a+b;

      }

      sum(a,b);  //調用方法

    ⑤. 立即執行的函數 :

      ( function(a,b)  { return a+b } ) (a,b);

    ※. ES6中允許使用" 箭頭 "( => )定義函數 :

      var f = v => v;

      f : 函數名

      v : 函數參數 (箭頭左側) 如果函數有多個參數或者沒有參數,此位置要用圓括弧代替

      v : 函數返回 (箭頭右側)

  2. 函數的arguments參數 :

    function f2 (a,b)  {

      console.log(arguments.length);

      console.log(a,b);

    }

    f2(2,3);

    輸出結果 :  2

          2  3 

   

    即使函數設定的參數的個數,但是用了內建arguments參數的函數也可以接受任意數量的參數.

  3. 函數的全域變數和局部變數 :

    ①. 全域變數 : 

      在JavaScript函數的外部聲明的變數是全域變數,網頁上所有指令碼和函數都可以訪問它.

    ②. 局部變數 :

      在JavaScript含糊內部聲明的變數(使用var)是局部變數,所以只能在函數內部訪問它(該變數的範圍是函數內部).只要函數運行完畢,本地的局部變數就會被刪除.

    ③. 變數的生存周期 ;

      JavaScript變數的生命週期從他們被聲明開始.

      局部變數在函數運行完之後被刪除.

      全域變數會在頁面關閉後刪除.

    ④. 變數的範圍 : 

      函數尋找變數會首先在函數內部尋找,找不到則到外層尋找,逐步找到最外層.

  4. 詞法分析

    JavaScript中在調用函數之前,會有一瞬間的時間去對函數進行詞法分析.

    函數內部無論是使用參數還是使用局部變數都到AO上找.--*/

    詞法分析過程 :

      當函數調用的前一瞬間,會先形成一個啟用物件(Active Object),簡稱AO.

      ①. 函數設定形參,添加到AO屬性,並且值為undefined,即AO,參數 = undefined

         函數運行接收實參,添加到AO屬性,將之前的undefined值覆蓋

      ②. 如果在分析參數時AO未添加變數屬性,則將變數屬性添加到AO且值為undefined,即AO.變數 = undefined

         如果在分析參數時AO已經有了變數屬性,則變數屬性不做修改.

      ③. 如果函數內聲明了和分析變數得出的變數名相同的函數,則將對應的變數替換成函數.如果沒有聲明函數或者聲明的函數和分析變數的變數名不相同,則不做任何操作.

  5. 內建對象和方法

    JavaScript中的所有事物都是對象 : 字串, 數字, 數組, 日期, 等等.對象是擁有屬性和方法的資料.

類型 內建對象 介紹
資料類型 Number 數字對象
String 字串對象
Boolean 布爾值對象
組合對象 Array 數組對象
Math 數學對象
Date 日期對象
進階對象 Object 自訂對象
Error 錯誤對象
Function 函數對象
RegExp Regex對象
Global 全域對象

前端之JavaScript進階

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.