国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

在javascript中,執行環境及作用域

2024-04-27 15:14:52
字體:
來源:轉載
供稿:網友

        執行環境(execution context)是javascript中最為重要的一個概念。

        其中,全局執行環境是最外圍的一個執行環境。當代碼在一個環境中執行時,會創建變量對象的一個作用域鏈(scope chain)。作用域鏈的用途,是保證對執行環境有權訪問的所有變量和函數的有序訪問。全局執行環境的變量對象始終都是作用域鏈中的最后一個對象。

        標識符解析是沿著作用域一級一級地搜索標識符的過程。搜索過程始終從作用域鏈的前端開始,然后逐級地向后回溯,直至找到標識符為止。

            var color="blue";                    function changColor(){                        if(color=="blue")                        {                            color="red";                        }                        else                        {                            color="blue";                        }                    }                    changColor();                    alert("Color is now "+color);   //red

         每個環境都可以向上搜索作用域鏈,以查詢變量和函數名,但是任何環境都不能通過向下搜索作用域鏈而進入另一個執行環境。

        *延長作用域鏈  //p75

        *沒有塊級作用域

            if(true)            {                var color="blue";            }            alert(color);         //blue

           如果在c、c++、或者java中,color會在if語句執行后銷毀,但是在js中,if語句中的變量聲明會將變量添加到當前的執行環境

           for(var i = 0; i < 10; i++) {                doSomething(i);            }            alert(i);    //10

           在js中,由for語句創建的變量i即使在for循環執行結束后,也依舊會存在于循環外部的執行環境中。

           *查詢標識符

            搜索標識符,搜索過程從作用域鏈的前端開始,向上逐級查詢與給定名字匹配的標識符。如果在局部環境中找到該標識符,搜索過程停止,變量就緒。如果在局部環境中沒有找到標識符,就繼續沿作用域向上搜索。搜索過程將一直追溯到全局環境的變量對象。如果在全局環境中沒有找到,那么該變量沒有聲明。

             (1)var color="blue";                        function getColor(){                           return color;                        }                       alert(getColor());     //blue

             (2)var color="blue";                      function getColor(){                          var color="red";                          return color;                      }                     alert(getColor());       //red

               其中在第二段代碼中,任何位于局部變量color聲明之后的代碼,如果不使用window.color都無法訪問全局color變量


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天峻县| 华蓥市| 陈巴尔虎旗| 惠东县| 新民市| 阳江市| 香格里拉县| 清水河县| 辽宁省| 丰城市| 延津县| 新巴尔虎左旗| 香河县| 池州市| 阿拉善盟| 永安市| 瑞金市| 琼结县| 屯昌县| 汕头市| 惠安县| 巴林左旗| 黔江区| 来安县| 疏附县| 南城县| 迭部县| 太和县| 丹江口市| 南开区| 呼图壁县| 麦盖提县| 财经| 博客| 西畴县| 溆浦县| 台南市| 宣城市| 边坝县| 拉萨市| 河西区|