函数

函数声明:

  function aaa(){}

  有预解析,在if...else...分别调用不同的函数,要采用函数表达式的形式

函数表达式:

  var a = function aaa(){}  命名函数表达式

  var a = function (){} 匿名函数表达式

  (function aaa(){})() 表达式

  ~function aaa(){}

  !function aaa(){}

  +function aaa(){}

  -function aaa(){}

区别:

  1、函数表达式可以直接后面加括号执行,而函数声明不行

  2、函数声明有预解析

递归:

  1、使用arguments.callee访问自身的函数来实现递归

  2、在严格模式中不支持,使用命名函数表达式来实现

        function factorial(num){
            if (num<=1){
                return 1;
            } else {
                return num * arguments.callee(num-1);
            }
        }
//或者
        var factorial = (function f(num){
            if (num<=1){
                return 1;
            } else {
                return num * f(num-1);
            }
        })

        var an = factorial;
        factorial = null;
                an(4)
原文地址:https://www.cnblogs.com/joya0411/p/5359382.html