词法作用域、动态作用域

在看《你不知道的JavaScript》的时候更加深入的了解了一下js中的作用域,看的是很带劲儿,但是总害怕记不住,好记性不如烂笔头嘛,所以我决定稍微写一些,考虑的不太全面,以后慢慢修改。

需要明确的是:事实上JavaScript并不具有动态作用域,它只有词法作用域,简单明了,但是this机制某种程度上很像动态作用域。

词法作用域:是一套引擎如何寻找变量以及会在何处找到变量的规则,它是定义在词法阶段的作用域,是由写代码时将变量和块作用域写在哪里来决定的。

动态作用域:动态作用域并不关心函数和作用域是如何声明以及在何处声明的,只关心它们从何处调用。类似this的指向问题。 

看一个小题: 

function foo(){
  console.log(a);
}
function bar(){
  var a=3;
  foo();//2
}
var a=2;
bar();

foo是在全局作用域中定义的,无论在何处调用它的作用域都不会发生变化,都是全局作用域(根据词法作用域来看)。所以会找响应的全局中的变量a,若没找到就会输出undefined。 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值