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

首頁 > 語言 > JavaScript > 正文

關于javascript作用域的常見面試題分享

2024-05-06 15:15:44
字體:
來源:轉載
供稿:網友

本文主要給大家分享了關于javascript作用域面試題的相關內容,分享出來供大家參考學習,下面來一起看看吧。

一、作用域:

在了解作用域之前,首先需要明白一些基礎概念:

每一個變量、函數都有其作用的范圍,超出作用不得使用,這個叫做作用域。

二、全局變量、局部變量:

1.全局變量:

     (1)在全局范圍內聲明的變量,如var a=1;

     (2)只有賦值沒有聲明的值,如a=2; (注:如果a=2在函數環境中,也是全局變量)

2.局部變量:

      寫入函數中的變量,叫做局部變量。

3.作用:

     (1)程序的安全。

     (2)內存的釋放。

三、作用域鏈:

查找量的過程。先找自己局部環境有沒有聲明或者是函數,如果有,則查看聲明有無賦值或者是函數的內容,如果沒有,則向上一級查找。

四、預解析順序:

每個程序都要做的工作,程序開始先預解析語法,標點符號是否有誤,解析內存是否可容納,解析變量……直到解析無誤了,才開始按正常的流程順序走。試想一下,如果沒有預解析順序,直接按流程順序走,可能程序執行到最后一個函數,發現了語法錯誤,才開始報錯,那性能要有多差啊!

順序內容:

      1.文件內引用的<script>塊依次解析,從上到下連成一片。

      2.每個script塊內部的var(注意:只解析變量名,不解析值,如var a=2;將var a解析在環境的開頭,并不解析后面的值,只有當程序執行到var a=2這行時,才會給變量賦值),function解析到本塊的開頭。

      3.依次解析每個環境,將var,function解析到環境的開頭。

五、應用場景(一些常見的作用域相關的面試題):

var a="aa";function test(){ alert(a);//undefined,函數執行后,在函數環境內,var a會預解析,當彈出a時,首先先找本層環境內有無聲明,發現有。但是代碼沒有執行到賦值,所以結果是undefined。 var a="bb";//var a會預解析在函數開頭,執行到這行才進行賦值 alert(a);//“bb”}test();alert(a);//"aa" 找全局環境下的聲明,找到了var a="aa"
var a="aa";function test(){ alert(a);//“aa”,函數執行后,在函數環境內,沒有找到本層環境關于a的聲明,所以開始向上一層環境查找。 a="bb";//執行到這行開始改變全局a的量}test();alert(a);//"bb" 全局環境的a在函數執行時已經被改變            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 南开区| 铜鼓县| 新丰县| 茶陵县| 陆良县| 呼玛县| 腾冲县| 札达县| 福鼎市| 兖州市| 鄂尔多斯市| 永胜县| 金沙县| 习水县| 高台县| 威信县| 徐汇区| 江源县| 昔阳县| 普定县| 平泉县| 北海市| 遂溪县| 孟村| 西昌市| 邯郸县| 镇平县| 塘沽区| 涿鹿县| 陕西省| 额济纳旗| 广饶县| 嘉祥县| 历史| 商都县| 三穗县| 长顺县| 拉萨市| 绥棱县| 抚州市| 象山县|