JS中嵌套函数有什么用

JavaScript024

JS中嵌套函数有什么用,第1张

function myWrite(str){ document.write(str+"<br/>") }function myFun(){ function mySum(x,y) { var z=x+yreturn z } var b=mySum(1,6) myWrite(b) }myFun()1.函数嵌套定义只能出现在函数,不能出现在选择语句或循环语句中;2.嵌套定义的函数只能在嵌套的函数中使用;如上 mySum函数只能在myFun函数调用;不能再其他函数中调用,如myWrite函数;也不能再myFun函数的其他顶层全局代码中调用.

方法嵌套实际是要实现一种循环,是循环就有两个要素:一个是终止条件,一个是增量。

嵌套函数和普通函数有一点不同: 

    既然是嵌套函数,就是把自身当作值运用到函数体内。这就要求函数必须有一个返回值。就要用return语句。

 

function a(x){ 

    if(x<=1) 

        return 1 

    else 

        return x*a(x-1) 

//上述示例是一个嵌套函数,来确定一下循环要素:if(x<=1) return 1这是终止条件,当x<=1时终止,else return x*a(x-1)这是增量,每次嵌套调用函数a()时参数都会减1  

function a(x){ 

    if(x<=1)

         return 1 

    else{ 

        var m=1 

        for(var i=2i<=xi++){ 

            m*=i 

        } 

        return m 

    } 

//上述示例嵌套函数就是要实现这样的循环

functionoutter(){//在outter中定义一个内嵌函数,innerfunctioninner(){alert('innerfunctioncall.')}returninner//返回内嵌的函数。//innerisoutofscope.}functionfollow(){varinner=outter()//在follow中调用outter,获取inner函数的引用。inner()//执行,我可以执行作用域外的函数了!}上面是举个简单的例子,来说明函数声明的作用域。上面的outter函数中,方法执行结束之后,inner函数的上下文已经销毁了。正常情况下,内部函数也会随着销毁。但是由于我们返回了inner函数的引用,并且在follow函数中成功赋值。因此inner函数虽然已经处于作用域外了,但是由于仍然有一个引用,所以它还是可以继续被执行。但是follow函数结束以后,follow的上下文也销毁了,并且这次,inner函数再也没有机会逃离被销毁的命运了。因此所谓函数嵌套的问题,就是作用域+引用的问题。只要搞明白了这个就可以了。