执行上下文
顾名思意就知道他是动态的,只在代码运行的时候产生
作用域
顾名思意就知道它是一个"领域",并且这个"领域"在一开始就规划好, 不会在改,
var d; function fnd(){ console.log(d);//undefined }; (function(f){ var d=20; f(); }(fnd));
上面的例子就很好的说明了这一点,因为在javascript中只有函数能生成作用域,在加上作用域在一开始就固定了
>这样我们就可以推测出d=undefined
当然如果作用域不是全局作用域,那么如果里面有自由变量就会向上遍历,找不到就undefined
执行上下文和作用域的区别
1.执行上下文为动态的,作用域是静态的,或者可以说这是静态作用域
2.可以没有上下文,但一定会有静态作用域,因为你不执行函数哪来的上下文?