函数声明和函数表达式

定义函数的常见方法:闭包

函数声明的一个特征:函数声明提高;函数

函数声明如:this

function fName(){

}

函数表达式也是常见的建立函数的方法:spa

var fName = function ( ) { 

}

函数表达式的另外一种声明的方法:
(function f(){}); //()是一组分组操做符,它的内部只能包含表达式

注意:函数表达式与其余表达式同样,在使用前必定要进行赋值操做。在把函数当作值来使用的状况下,均可以使用匿名函数,指针

可是这不是匿名函数的惟一用途。code

建立函数也能够再另外一个函数中返回一个函数对象

function create ( ){ 
              
                  ..........
              
                 return function( ){
                           ........
                 };    
      
}              

函数递归:一个函数经过调用自身的状况blog

funtion fName (){


            if(num <= 1){
                    return 1;
            }else{
                    return num * arguments.callee( num -1 );//arguments.callee是一个指向当前函数的一个指针 
            }

}        

闭包:是指有权访问另外一个函数做用域中的变量的函数,闭包会携带包含它的函数的做用域变量对象。递归

一个闭包的例子:作用域

 1 var name = " 闭包";
 2                 
 3     var object = {
 4                     
 5         name : "JS",
 6                     
 7         getName : function(){
 8                     
 9             //这是一个闭包
10             return function(){
11                     return this.name;
12             };
13                         
14     }
15                         
16 };

由上面的例子谈下关于闭包的this对象,闭包的this对象通常状况下指向的是window;

 1 var name = " 闭包";
 2 
 3 var object = {
 4     
 5     name : "JS",
 6     
 7     getName : function(){
 8     
 9             //这是一个闭包
10             return function(){
11                 return this.name;
12             };
13         
14     }
15         
16 };
17 
18 console.log(object.getName()()); //输出闭包 this指向 window
 1 var name = " 闭包";
 2 
 3 var object = {
 4     
 5     name : "JS",
 6     
 7     getName : function(){
 8     
 9             //把包含函数的this引用复制给变量,在闭包中调用,改变闭包的this引用
10             
11             var _this = this;
12             
13             //这是一个闭包
14             return function(){
15                 return _this.name;
16             };
17         
18     }
19         
20 };
21 
22 console.log(object.getName()()); //输出JS this指向 object
相关文章
相关标签/搜索