<bdo id='ONEEv'></bdo><ul id='ONEEv'></ul>
  • <legend id='ONEEv'><style id='ONEEv'><dir id='ONEEv'><q id='ONEEv'></q></dir></style></legend>
    <tfoot id='ONEEv'></tfoot>

    1. <small id='ONEEv'></small><noframes id='ONEEv'>

      1. <i id='ONEEv'><tr id='ONEEv'><dt id='ONEEv'><q id='ONEEv'><span id='ONEEv'><b id='ONEEv'><form id='ONEEv'><ins id='ONEEv'></ins><ul id='ONEEv'></ul><sub id='ONEEv'></sub></form><legend id='ONEEv'></legend><bdo id='ONEEv'><pre id='ONEEv'><center id='ONEEv'></center></pre></bdo></b><th id='ONEEv'></th></span></q></dt></tr></i><div id='ONEEv'><tfoot id='ONEEv'></tfoot><dl id='ONEEv'><fieldset id='ONEEv'></fieldset></dl></div>
      2. js 函数的执行环境和作用域链的深入解析

        时间:2023-12-08
        <legend id='gWmKY'><style id='gWmKY'><dir id='gWmKY'><q id='gWmKY'></q></dir></style></legend>
        <tfoot id='gWmKY'></tfoot>

        <small id='gWmKY'></small><noframes id='gWmKY'>

            <bdo id='gWmKY'></bdo><ul id='gWmKY'></ul>
                  <tbody id='gWmKY'></tbody>

                  <i id='gWmKY'><tr id='gWmKY'><dt id='gWmKY'><q id='gWmKY'><span id='gWmKY'><b id='gWmKY'><form id='gWmKY'><ins id='gWmKY'></ins><ul id='gWmKY'></ul><sub id='gWmKY'></sub></form><legend id='gWmKY'></legend><bdo id='gWmKY'><pre id='gWmKY'><center id='gWmKY'></center></pre></bdo></b><th id='gWmKY'></th></span></q></dt></tr></i><div id='gWmKY'><tfoot id='gWmKY'></tfoot><dl id='gWmKY'><fieldset id='gWmKY'></fieldset></dl></div>

                  JS 函数的执行环境和作用域链的深入解析

                  1. 执行环境

                  在 JavaScript 中,执行环境是指一段可执行代码的运行环境,有全局执行环境和函数执行环境两种。

                  全局执行环境

                  全局执行环境是在浏览器中直接打开网页时就会创建的执行环境,它是最顶层的环境。全局执行环境中定义的变量和函数被称为全局变量和全局函数,它们可以在程序的任何地方被访问和修改。

                  示例代码:

                  var a = 'Hello World';
                  function sayHello() {
                    alert(a);
                  }
                  sayHello(); // 输出 Hello World
                  

                  在上面的代码中,变量a和函数sayHello()都定义在全局执行环境中,所以它们可以被main函数中的代码所访问。

                  函数执行环境

                  除全局执行环境外,JavaScript还有函数执行环境。当一个函数被执行时,就会创建一个函数执行环境,这个执行环境也可以称为活动对象。这个执行环境被用来存储函数内部的局部变量、函数参数和内部函数等。

                  示例代码:

                  function main() {
                    function sayHello() {
                      var name = 'world';
                      alert("Hello, " + name);
                    }
                    sayHello();
                  }
                  main(); // 输出 Hello, world
                  

                  在上面的代码中,函数sayHello()内部定义了一个局部变量name,这个变量只能在函数内部被访问。在函数被调用时,就会创建一个函数执行环境。在函数执行完毕之后,这个函数执行环境就会被销毁,这个局部变量也会被删除。

                  2. 作用域链

                  作用域指的是程序在运行过程中,可以访问和修改的变量的集合。JavaScript中的作用域是静态作用域,也就是说变量的作用域取决于它们在程序中定义的位置,而不是在程序中执行的位置。

                  作用域链指的是一个函数执行环境中所有可访问的作用域的链表,链表的顶部是本地的活动对象,链表的底部是全局对象。作用域链实际上是在函数定义的时候就已经确定了。

                  示例代码:

                  var a = 'Global'; // 全局变量
                  
                  function fun1() {
                    var a = 'Local'; // 局部变量
                    function fun2() {
                      alert(a); // 输出 Local
                    }
                    fun2();
                  }
                  
                  fun1();
                  

                  在上面的代码中,当函数fun2()需要访问局部变量a时,首先在自己的活动对象中查找,如果找到了就不再继续向上查找,如果没有找到,就开始向上查找整个作用域链,直到找到全局对象才停止查找。

                  总结

                  JavaScript的执行环境和作用域链是实现变量访问和作用域的关键机制。全局执行环境和函数执行环境分别对应着全局作用域和函数作用域,作用域链指的是一个函数执行环境中所有可访问的作用域的集合。可以通过声明变量、定义函数等方式来改变作用域链。

                  上一篇:JS实现回到页面顶部动画效果的简单实例 下一篇:JS函数本身的作用域实例分析

                  相关文章

                  <legend id='n7LJL'><style id='n7LJL'><dir id='n7LJL'><q id='n7LJL'></q></dir></style></legend>

                  1. <i id='n7LJL'><tr id='n7LJL'><dt id='n7LJL'><q id='n7LJL'><span id='n7LJL'><b id='n7LJL'><form id='n7LJL'><ins id='n7LJL'></ins><ul id='n7LJL'></ul><sub id='n7LJL'></sub></form><legend id='n7LJL'></legend><bdo id='n7LJL'><pre id='n7LJL'><center id='n7LJL'></center></pre></bdo></b><th id='n7LJL'></th></span></q></dt></tr></i><div id='n7LJL'><tfoot id='n7LJL'></tfoot><dl id='n7LJL'><fieldset id='n7LJL'></fieldset></dl></div>

                      <bdo id='n7LJL'></bdo><ul id='n7LJL'></ul>

                    <tfoot id='n7LJL'></tfoot>
                  2. <small id='n7LJL'></small><noframes id='n7LJL'>