close
這只是一篇小小關於Javascript 函式的小note,紀錄一些javascript function 物件的一些基礎知識,以便回頭看時可以快速找到有用的資訊。
- Javascript 具名函式的範圍: 包括其外部函式,也就是在其父函式所在範圍內該具名函式都有效。
- 一函式的匿名子函式根據閉包的原則,其可以存取父函式所宣告的物件或變數。
- 每個函式都有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) - 函式的this物件通常預設是指向調用呼叫該函式的物件,而全域函式的this物件是window。
- 函式也是物件,也可以添加屬性,用來紀錄與儲存函式狀態和資訊。
var fn = function () { do something; }
fn.id = 1; // 添加屬性到函式中。 - 函式有一些很有用的預設參數:
(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) 有所謂函式多載的概念,必需透過一些技巧方能實現類似的函式多載功能。
2018年4月17日星期二
文章標籤
全站熱搜
留言列表