JavaScript中的函数表达式

来源:互联网 发布:软件代理销售协议 编辑:程序博客网 时间:2024/05/23 11:45

函数表达式

定义函数有两种方式:一种是函数声明,一种是函数表达式。
函数声明的语法:

function functionName(arg0,arg1,arg2){    //do something}

函数声明有个重要特征就是函数提升,在执行代码之前会先读取函数声明,这意味着可以把函数声明放在调用它的语句后面。
函数表达式的语法:

var functionName = function(arg0,arg1,arg2){    //do something  };

递归

递归是一个函数通过名字调用自身的情况。例如:

function factorial(num){    if(num <= 1){        return 1;    }else{        return num*factorial(num-1);    }}

模仿块级作用域

JavaScript没有块级作用域的概念,这意味着块语句中定义的变量,实际上是在包含函数中而非语句中创建的,例如:

function outputNumbers(count){    for(var i=0; i<count; i++){        alert(i);    }    alert(i);}

可以使用匿名函数来模仿块级作用域,匿名函数的语法:

function(){    //这里是块级作用域  })();

私有变量

任何函数中定义的变量,都可以认为是私有变量,因为不能在函数外部访问这些变量,私有变量包括函数的参数、局部变量和函数内部定义的其他函数。
我们把有权访问私有变量和私有函数的公有方法称为特权方法,有两种在对象上创建特权方法的方式。
第一种,在构造函数中定义特权方法

function MyObject(){    var privateVariable = 10;    function privateFunction(){        return false;    }    this.publicMethod = function(){    //特权方法        privateVariable++;        return privateFunction();    };}

第二种,通过在私有作用域中定义私有变量或函数

(function(){    var privateVariable = 10;    function privateFunction(){        return false;    }    MyObject = function(){};                    //全局变量    MyObject.prototype.publicMethod = function(){        privateVariable++;        return privateFunction();    };})();
原创粉丝点击