深入作用域之静态作用域与动态作用域

  概念:

    静态作用域指的是一段代码,在它执行之前就已经确定了它的作用域,简单来说就是在执行之前就确定了它可以应用哪些地方的作用域(变量)。

    动态作用域在代码执行的时候才确定它的作用域的,以及作用域链。

静态作用域:

var a = 10;
function fn(){
    var b = 1;
    console.log(a+b);
}
fn(); //11

在创建函数fn的时候就已经确定了它可以作用那些变量,如果函数fn里面有变量a就直接作用函数fn里面的变量a,如果没有就往上一级找,这就是静态作用域。

 

动态作用域:

var a = 10;
function fn(a){
    var b = 1;
    console.log(a+b);
}
fn(1); //2

你肯定会疑问你上面不是说,函数fn在创建的时候就已经确定了它的作用域吗?为什么现在又不是了?其实一开始它确实已经确定了它的作用域,但是又因为你在调用这个fn的时候写了参数,这个函数fn的作用域又发生了改变,变成了动态的作用域,于是它作用了在函数体内的变量a。

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值