函数声明和函数表达式

定义函数的常见方法:

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

函数声明如:

function fName(){

}

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

var fName = function ( ) { 

}

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

注意:函数表达式与其他表达式一样,在使用前一定要进行赋值操作。在把函数当做值来使用的情况下,都可以使用匿名函数,

但是这不是匿名函数的唯一用途。

创建函数也可以再另一个函数中返回一个函数

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

函数递归:一个函数通过调用自身的情况

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

 

转载于:https://www.cnblogs.com/hellome/p/4019463.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值