这只是一篇小小关于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日星期二

相关文章