JavaScript 中的词法作用域

JavaScript 中作用域有两种主要的工作模式,第一种是词法作用域,另外一种叫做动态作用域

大部分标准语言编译器的第一个工作叫做词法化,也就是说对源代码中的字符进行检查,然后如果是有状态的解析过程,那么还会赋予单词语义。所以,词法作用域就是定义在词法阶段的作用域。是由你在写代码时将变量和作用域写在哪里决定的,因此词法分析器会保持作用域不变。

举个栗子:

var a = 1;

function demo() {
  alert(a);
}

~function(){
  var  a = 2;
  demo();  // 1
}()

demo()函数弹出的 a 为 1 而不是 2,说明匿名函数内部定义 a 变量并没有成功。说明了变量 a 在编译器执行阶段就已经确定了 a ,不会再去动态的改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值