首页 > 代码库 > 函数声明和函数表达式

函数声明和函数表达式

定义函数的常见方法:

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

函数声明如:

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

 

函数声明和函数表达式