JavaScript——递归,嵌套和闭包

页面导航:首页 > 网络编程 > JavaScript > JavaScript——递归,嵌套和闭包

JavaScript——递归,嵌套和闭包

来源: 作者: 时间:2016-02-01 09:31 【

关于函数创建的三种方式以及递归,嵌套和闭包的概念经常容易搞混。函数定义的三种方式:1 声明式函数(标准的关键字function+函数名+(参数列表)+{函数主体})例如:function functionname(pa

关于函数创建的三种方式以及递归,嵌套和闭包的概念经常容易搞混。

函数定义的三种方式:1.声明式函数(标准的关键字function+函数名+(参数列表)+{函数主体})

例如:function functionname(param1,param2,......,paramn)

{function statment}

2.匿名式函数(将函数赋予的变量+构造函数Function+(参数))

例如:var variable=new Function(param1,param2,......,paramn,function body);

3.函数字面量:只会被解析一次(匿名和非匿名两种)

A.匿名形式的(可以作为参数传递给另一个函数)

var func=function (param1,param2,......,paramn){function satament}

B.非匿名式的(适用函数内部,只有函数内部的代码才能通过其名称调用它,非常适合与递归)

var func=function functionname(param1,param2,......,paramn){function statment}

 

递归,嵌套和闭包的理解:

1.递归:一般是用来针对非匿名形式函数字面量和声明式函数。

调用自身的函数称为递归函数;

缺点:递归占用的内存和资源比较多,同时难以实现和维护。

优点:在处理DOM之类的树形结构数据时,非常适合用递归。

例如:function commonFunction()

{

var myFunc=function specialFunction(param1,param2,......,paramn)

{

function body;//存在某个判断条件使递归最终跳出循环

return specialFunction(param1,param2,......,paramn);

}

var result=myFunc(param1,param2,......,paramn);

}

2.嵌套:不适用于匿名式函数(动态式),因为匿名式函数每次使用时都需要重构。

在某一函数内部存在了另一个函数就会形成嵌套。对于嵌套函数来言,内部函数在外部函数作用域内执行,并拥有对外部函数的参数和变量的访问权。而外部函数没有访问内部函数的权限。

内部函数通过外部函数传递给应用程序时将直接调用它,它可以使用作为参数传递给外部函数的参数值。

例如: <script>

function outerFunc(base)//外部函数

{

var outerStr=!!!!;

return function(ext){ //内部函数

return base+ext+outerStr;

}

}

function myApplication()//应用函数

{

var baseStr=outerFunc(Hello);//创建对内部函数的访问

var newStr=baseStr(World);

alert(newStr);

}

</script>

3.闭包:可以在嵌套的基础上理解闭包;当嵌套中的内部函数是以:A.内部对象形式创建的一个函数字面量B.并将其通过调用外部函数返回给主调应用程序中的一个变量,这就会形成一个Script闭包。

应用:用来获取内部函数中的变量值。因为外部函数a没有访问内部函数b中变量和参数的权限,所以为了能够使用内部函数b中的参数或变量,我们可以在内部函数b里面建立一个对象形式的函数字面量c,这样这个新建的函数字面量c就可以访问内部函数b中的变量和参数。通过将内部函数b赋值给外部函数a中的变量,就可以通过外部函数a中的这个变量模拟函数字面量c,实现对内部函数b的参数和变量的访问。

 

 

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<