美文网首页Web前端之路让前端飞
JavaScript 中的词法作用域

JavaScript 中的词法作用域

作者: 白色鹈鹕鸟 | 来源:发表于2017-10-28 09:13 被阅读14次

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

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

举个栗子:

var a = 1;

function demo() {
  alert(a);
}

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

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

相关文章

  • 词法作用域

    我们知道JavaScript并不具有动态作用域,它只有词法作用域,什么是词法作用域? 一、 词法作用域 词法作用域...

  • JavaScript this 绑定规则

    JavaScript 中的作用域是词法作用域。而JavaScript中的 this 却更加类似于 动态作用域的机制...

  • 2.词法作用域

    JavaScript的作用域模型采用的是词法作用域 词法阶段 查找 欺骗词法作用域 既然词法作用域完全由编写时来决...

  • 「JS」变量作用域

    作用域介绍静态作用域动态作用域 JavaScript 变量作用域词法环境组成创建结构关于词法环境的问题with 语...

  • JS作用域的深入理解

    作用域 作用域是指程序源代码中定义变量的区域,JavaScript 采用词法作用域(lexical scoping...

  • JavaScript深入之词法作用域和动态作用域

    转自:JavaScript深入之词法作用域和动态作用域 作用域: 作用域是指程序源代码中定义变量的区域。 作用域规...

  • JavaScript作用域和变量提升

    一、JS的作用域 1.JS采用词法作用域 首先,我们得知道JavaScript采取的是词法作用域,而不是动态作用域...

  • JavaScript 之 静态作用域与动态作用域

    静态作用域 JavaScript 采用词法作用域(lexical scoping),也就是静态作用域。 函数的作用...

  • 一网打尽 JavaScript 的作用域

    JavaScript 的作用域包括:模块作用域,函数作用域,块作用域,词法作用域和全局作用域。 全局作用域 在任何...

  • javascript基础知识问答-作用域和闭包

    1.理解词法作用域和动态作用域2.理解JavaScript的作用域和作用域链3.理解JavaScript的执行上下...

网友评论

    本文标题:JavaScript 中的词法作用域

    本文链接:https://www.haomeiwen.com/subject/yqghpxtx.html