当然, 这并没有什么问题, 但是随着时间推移, 程序的规模越来越大, 问题就出现了.
你定义了一个变量 x=2, 调用了一个系统函数之后, 回来发现x变成9了....毕竟很多时候, 你需要调用各种现有的库, 你无法保证没有冲突.
很显然, 这并不能解决本质问题.
变量回写
既然同名这个方向走不通了, 那就往全局方向使劲吧....如果说, 我在函数退出的时候, 把变量再改回我进来时候的样子, 不就能假装什么都没有发生吗?...动态作用域读取变量的结果, 其实与上方的回写变量的方式差不多, 不同的是, 动态作用域保留了全局变量原始的值....静态作用域
静态作用域也是通过变量的对照表来实现, 与动态作用域不同的是, 每个函数能看到的变量对照表只有自己的和全局的, 上面的函数调用, 换成静态作用域大概如下:
?