JS中函数的词法作用域

在javascript中,每一个函数都拥有自己的词法作用域。简单理解就是,每个函数在被定义(注意不是调用!)时,都会创建一个属于自己的环境(作用域)。

比如,

function foo(){
    var  a = 1; 
foo2(); }
function foo2(){ console.log(a); }
fon();

运行结果:

ReferenceError: fon is not defined.

因为,函数foo2在被定义时,它可以访问的环境只有全局作用域和它自己的函数作用域,并不能访问到函数foo中的变量a。

当调用函数foo时,会执行foo2,此时的foo2会在它的自发作用域中找a,由于并不能找到变量a,所以系统就会报错了。

posted @ 2016-10-18 21:40  昆吾kw  阅读(247)  评论(0编辑  收藏  举报