JS變量提升蹄咖,瀏覽器渲染原理

標識符

定義變量,函數(shù)付鹿,屬性的時候的標識符澜汤,是區(qū)分大小寫的。
第一個字符必須是字母舵匾,_$俊抵。
后面的還可以是數(shù)字。

變量提升

js的引擎工作方式是坐梯,先解析代碼徽诲,獲取所有的被聲明的變量,然后再一行一行地運行。所以谎替,所有變量的聲明語句,都會被提升到代碼的頭部钱贯,稱為變量提升。
var a =2;這個賦值語句秩命,進行解析時,

  var a;
  a =2;

硫麻,先解析出變量聲明爸邢,a的初始值為undefined,然后才逐句執(zhí)行程序拿愧。
舉例:

    var a = 100;
    b = 10;
    console.log(a);
    console.log(c);
    
    var c = 20;
    var d = 30;
    

解析完成后的代碼其實為:

        var a;
        var c;
        var d;
    //    變量提升


        a = 100;
        b = 10;
        console.log(a); // 100
        console.log(c); //undefined

        c = 20;
        d = 30;

瀏覽器渲染機制

  1. CSS和JS在網(wǎng)頁中的放置順序是怎樣的?
    css樣式一般要使用link標簽放到頂部浇辜。body的前面,即head標簽內(nèi)柳洋。
    對于js待诅,一般要將js放在底部,因為腳本會阻塞后面內(nèi)容的呈現(xiàn)以及后面組件的下載熊镣。
    css加載的時候是允許并發(fā)加載的卑雁,但是對于js來說绪囱,會禁用并發(fā)并且阻止其他內(nèi)容的下載,所以當把js放到頂部的時候也可能會出現(xiàn)白屏現(xiàn)象鬼吵。

  2. 白屏問題和FOUC
    如果把樣式放在底部,對于IE瀏覽器琉挖,在某些場景下(新窗口打開涣脚,刷星等)頁面會出現(xiàn)白屏示辈,而不是逐步展現(xiàn)內(nèi)容涩澡。
    另外坠敷,如果使用@import射富,即使CSS放入link,并且放在頭部胰耗,也可能出現(xiàn)白屏。
    FOUC(flash of unstyled content)卖漫,無樣式內(nèi)容閃爍赠群,如果把樣式放在頁面底部,對于IE瀏覽器查描,在某些場景下(點擊鏈接,輸入url冬三,使用書簽進入等),會出現(xiàn)FOUC現(xiàn)象(即逐步加載無樣式的內(nèi)容敌蚜,等到CSS全部加載完成之后頁面突然展現(xiàn)樣式窝爪。)對于firefox會一直表現(xiàn)出FOUC。

  3. 加載異步酸舍,async和defer

  • <script src="xxx.js"></script>沒有defer和async里初,瀏覽器會立即加載并且執(zhí)行指定的腳本,即不等待后續(xù)載入的文檔元素双妨,讀到就加載并執(zhí)行。
  • <script async src="xxx.js"></script> 有async泣特,加載和渲染后續(xù)文檔元素的過程將和script.js的加載與執(zhí)行并行進行(即異步)挑随。
  • <script defer src="xxx.js"></script>有defer,加載后續(xù)文檔元素的過程將和script.js的加載并行進行(異步),但是script.js的執(zhí)行要在所有的元素解析完成之后眯分,將DOMContentLoaded事件觸發(fā)之前完成柒桑。
  • defer和async的區(qū)別: defer腳本延遲到文檔解析和顯示之后才執(zhí)行,是由順序的魁淳。而async不保證順序。

4.瀏覽器的渲染機制

  • 解析HTML標簽昆稿,構建DOM樹
  • 解析CSS標簽息拜,構建CSSOM樹
  • 把DOM和CSSOM組合成渲染樹(render tree)
  • 把渲染樹的基礎上進行布局,計算每個節(jié)點的幾何結構
  • 把每個節(jié)點繪制到屏幕上(painting)

5.基本調(diào)試的方法

  • alert
  • console.log
  • 設置斷點
  • 二分法
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末岛抄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子夫椭,更是在濱河造成了極大的恐慌氯庆,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仁讨,死亡現(xiàn)場離奇詭異实昨,居然都是意外死亡,警方通過查閱死者的電腦和手機荒给,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來曙咽,“玉大人挑辆,你說我怎么就攤上這事孝情。” “怎么了咧叭?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵烁竭,是天一觀的道長。 經(jīng)常有香客問我婉弹,道長终吼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任际跪,我火速辦了婚禮,結果婚禮上良姆,老公的妹妹穿的比我還像新娘幔戏。我一直安慰自己玛追,他們只是感情好闲延,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布垒玲。 她就那樣靜靜地躺著,像睡著了一般合愈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上想暗,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天说莫,我揣著相機與錄音寞焙,去河邊找鬼储狭。 笑死,一個胖子當著我的面吹牛慈参,可吹牛的內(nèi)容都是我干的刮萌。 我是一名探鬼主播驮配,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼壮锻,長吁一口氣:“原來是場噩夢啊……” “哼涮阔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起敬特,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辣之,沒想到半個月后皱炉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體召烂,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡奏夫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年历筝,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梳猪。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡春弥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出匿沛,到底是詐尸還是另有隱情,我是刑警寧澤逃呼,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站苏揣,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏平匈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一忍燥、第九天 我趴在偏房一處隱蔽的房頂上張望弟跑。 院中可真熱鬧,春花似錦孟辑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吞加。三九已至尽狠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間袄膏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工码党, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留斥黑,地道東北人揖盘。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓兽狭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親椭符。 傳聞我的和親對象是個殘疾皇子荔燎,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容