lexical_scope
今天下午看了一篇文章,看到最后一个案例的时候,和我预想的有些不一样,有点蒙,顿时感觉自己之前的理解都是错的.其实不然.先来看下这个案例.
我以为输出的是123
,但是并不是,是123
.然后就在想了,为啥?
难道是f2
里执行f1
的时候,f1
查找num
是在f1
里查找不到的时候,再跑到f2
里查找的吗? 难道我之前记错了?词法作用域不是在声明的时候就确定了环境,而是在运行的时候确定的吗?不会吧? 我觉得不可能, 那么我们来试试.
咦,果然,输出了123
. 可是为啥之前的会改变? 原来不是因为查找顺序,而是因为在调用f1
之前,修改了全部变量. 添加了关键字之后,他只是声明了对应词法作用域的变量,并未污染到全局.
Last updated