zoukankan      html  css  js  c++  java
  • 《你不知道的JavaScript》读书笔记(二)词法作用域

    JavaScript 采用的是 词法作用域 的工作模型。

    定义

    词法化:大部分标准语言编译器的第一个工作阶段叫词法化(单词化),这个过程会对源代码中的字符进行检查,如果是有状态的解析过程,还会赋予单词意义。

    词法作用域:定义在 词法阶段 的作用域。

    词法作用域由谁决定:由你在写代码时将 变量块作用域 写在哪里来决定。因此大部分情况下,词法分析器处理代码时会保持作用于不变。

    【例】

    function foo(a){
        var b = a * 2;
    
        function bar(c){
            console.log(a, b, c);
        }
    
        bar( b * 3 );
    }
    
    foo( 2 );

    输出:2,4,12。

    解析:该例中有三个逐级嵌套的作用域,如下图:

    ① 包含整个全局作用域,其中只有一个标识符:foo

    ② 包含 foo 所创建的作用域,有三个标识符:a,b,bar

    ③ 包含 bar 所创建的作用域,有一个标识符:c

    作用域由对应的作用域块代码写在哪里决定,它们是逐级包含的。

    注意:没有任何作用域可以同时或者部分出现在两个外部作用域中。

    作用域查找会在找到第一个匹配的标识符时停止。

  • 相关阅读:
    fullCalendar改造计划之带农历节气节假日的万年历(转)
    Linked List Cycle
    Remove Nth Node From End of List
    Binary Tree Inorder Traversal
    Unique Binary Search Trees
    Binary Tree Level Order Traversal
    Binary Tree Level Order Traversal II
    Plus One
    Remove Duplicates from Sorted List
    Merge Two Sorted Lists
  • 原文地址:https://www.cnblogs.com/dee0912/p/4787545.html
Copyright © 2011-2022 走看看