9-29 函数嵌套及作用域链

Posted cheryol

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9-29 函数嵌套及作用域链相关的知识,希望对你有一定的参考价值。

特别注意local()域nonloca(),看代码注释部分

nonlocal只能用于局部变量,找上层离当前函数最近一层的局部变量
#声明了nonlocal的内部函数的变量修改会影响到离当前函数最近一层的局部变量
a=11
def outer():
    a = 1
    def inner():
        print(a)
        print(‘inner‘)
        b=2
        def inner2():
            # global a    #声明了一个全局变量
            nonlocal a  #声明了一个上面第一层局部变量
            a+=1    #不可变数据类型的修改
            print(a,b)
            print(‘inner2‘)
        inner2()
    inner()
    print(‘**a**:‘,a)
outer()
print(‘**全局a**:‘,a)

以上是关于9-29 函数嵌套及作用域链的主要内容,如果未能解决你的问题,请参考以下文章

JS 作用域及作用域链

JS 作用域及作用域链

函数的嵌套和作用域链,闭包

javascript的作用域链变量提升及预解析

javascript的作用域链变量提升及预解析

javascript的作用域链变量提升及预解析