這只是一篇小小關於Javascript 函式的小note,紀錄一些javascript function 物件的一些基礎知識,以便回頭看時可以快速找到有用的資訊。

  1. Javascript 具名函式的範圍: 包括其外部函式,也就是在其父函式所在範圍內該具名函式都有效。
  2. 一函式的匿名子函式根據閉包的原則,其可以存取父函式所宣告的物件或變數。
  3. 每個函式都有apply()call() function,目的是提供函式重新指定其函式上下文物件( this)。  二者之不同在於除指定this為何者的第一參數之外,apply 僅接受 陣列 引數 作為之後的實際參數, call 僅接受 一般引數 作為之後的實際參數。 
        Math.min.apply(Math, [1,2,3,4]);  // equal to Math.min(1,2,3,4)  
         Math.min.call(Math, 1,2,3,4);     // equal to Math.min(1,2,3,4)
  4. 函式的this物件通常預設是指向調用呼叫該函式的物件,而全域函式的this物件是window
  5. 函式也是物件,也可以添加屬性,用來紀錄與儲存函式狀態和資訊。  
        var fn = function () { do something; }  
        fn.id = 1;      // 添加屬性到函式中
  6. 函式有一些很有用的預設參數

    (1)length : 函式擁有的 形式參數 個數。
        EX:
    function f(a, b) {}  //f.length = 2 
    (2)arguments 傳入函式的實際參數之集合物件(Array但沒有Array相關function). 
    (3)arguments.length : 函式擁有的 實際參數 之個數。
        EX: f(3,4,5); => f.arguments.length = 3

  以上是Javascript 的函式物件一些基本上該認知到且很有用的基本概念,其中Javascript本身的函數雖然在宣告函式時可以定義形式參數個數,但實際上傳多少實際參數到函式中都是可被function 所允許的,而Javascript函式也不像其他高階語言一樣(如:C/Python) 有所謂函式多載的概念,必需透過一些技巧方能實現類似的函式多載功能。

2018417日星期二

arrow
arrow

    jackterrylau 發表在 痞客邦 留言(0) 人氣()