zoukankan      html  css  js  c++  java
  • javascript学习中自己对作用域和作用域链理解

    在javascript学习中作用域和作用域链还是相对难理解些,下面我关于javascript作用域和作用域链做一下详细介绍,给各位初学者答疑解惑。
     首先我们介绍一下什么是作用域?
      从字面上理解就是起作用的区域。
       作用域主要有两种作用域:
          1、块级作用域(js 不支持):主要用于C系列语言中,例如:Java Object-c/Swift(苹果开发语言)、C++/C#。在此不做过多说明。
          2、词法作用域  一个变量的作用范围,在代码写出来的那一刻就定下来了,不会根据代码的运行而受影响。
    换句话说就是变量的作用范围只与代码声明的地方有关,而与运行时无关。在javascript中只有函数能够形成一个作用域,所有在js中词法作用域也叫函数作用域。
      什么是作用域链?
      作用域链:每个函数都会形成一个作用域,如果函数被其他函数包裹,包裹函数也有作用域,一直往上直到全局环境。这样就形成了一条作用域链。
       说了那么多概念了,肯定枯燥了,就看个例子:

    <script type="text/javascript">
                      function fn() {
                var a = 456;
    
                function foo() {
                    var num = 123;
                    function f() {}
                       }
                foo();
                    }
    </script>

    我们从例子中可以知道 函数fn里面包裹着函数foo,函数foo中包裹着函数f的关系
                                         script标签包裹的区域为全局作用域
      f 的作用域链:f作用域->foo作用域->fn作用域->全局作用域。
    foo 的作用域链:foo作用域->fn作用域->全局作用域。
     fn 的作用域链:fn作用域->全局作用域。
     是不是对作用域有了清晰的认识了

  • 相关阅读:
    独立博客,从零到千万访问,这三年我都做了什么
    Postman使用详解
    Postman安装与使用
    Python爬虫入门教程:超级简单的Python爬虫教程
    《完全用Linux工作》——转载自清华退学博士
    转:一篇搞定Python正则表达式
    文件上传的单元测试怎么写?
    功能性测试分类
    ajax 学习笔记 timer控件
    ajax 学习笔记 updatepannel控件
  • 原文地址:https://www.cnblogs.com/lsy0403/p/5847276.html
Copyright © 2011-2022 走看看