JavaScript 中的词法作用域

今天药忘吃喽~ 2022-06-06 02:56 366阅读 0赞

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

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

举个栗子:

  1. var a = 1;
  2. function demo() {
  3. alert(a);
  4. }
  5. ~function(){
  6. var a = 2;
  7. demo(); // 1
  8. }()

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

发表评论

表情:
评论列表 (有 0 条评论,366人围观)

还没有评论,来说两句吧...

相关阅读

    相关 词法作用(marksheng)

    作用域模式 作用域的工作模式分为两种,静态作用域与动态作用域 其中静态作用域包括函数作用域和块作用域 可能同学要问那么词法作用域呢 其实词法作用域和静态作用域

    相关 JavaScript笔记:词法作用

    1、词法阶段 简单地说,词法作用域就是定义在词法阶段的作用域。 后面会介绍一些欺骗词法作用域的方法,这些方法在词法分析器处理过后依然可以修改作用域,但是这种机制

    相关 词法作用

    1、概念 变量的作用域 是由代码 书写的位置决定 而不是 变量被使用的位置决定;只有函数可以限定作用域。 2、作用域链 在JavaScript中使用变量,Java