前端之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.