成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

幫你精通JS:變量的聲明,舉起與初始化的問題

開發(fā) 前端
本篇繼續(xù)給大家介紹關(guān)于JS的相關(guān)知識,今天主要介紹變量的聲明,舉起與初始化的問題。

[[391521]]

一、首先 JS 的舉起 Hoisting

觀察一下變量自舉的代碼:

  1. today = "Friday"
  2. console.log(today); 
  3. // Friday 
  4.  
  5. var today = "Monday!"

雖然declare的步驟在最后,但是today已經(jīng)順利打印出來,這是因為declare被hoist到頂部。

  1. var today;           // hoisted declaration 
  2. today = "Friday";    // the original line 1 
  3. console.log(today);  // Hello! 
  4. today = "Monday";    // `var` is gone! 

JSEngine事先將var舉到頂部執(zhí)行,并初始化值undefined.

接著查看function自舉:

  1. today(); 
  2. // Friday! 
  3.  
  4. function today() { 
  5.     console.log("Friday"); 

同樣的原理在complie的步驟中,事先將所有的function都解析成AST,因此也就都hoist到了頂部。

繼續(xù)考察function與variable二者的組合。

  1. today = "Friday"
  2. printToday(); 
  3. // Today is Friday. 
  4.  
  5. function printToday() { 
  6.     console.log(`Today is ${ today }!`); 
  7. var today; 

實際的執(zhí)行是先將function舉起,再將var舉起。

  1. function printToday() { 
  2.     console.log(`Today is ${ today }!`); 
  3. var today; 
  4. today = "Friday"
  5. printToday(); 
  6. // Today is Friday. 

二、重復(fù)declare的問題

考察下面的代碼:

  1. let keepMoving = true
  2. while (keepMoving) { 
  3.     let value = Math.random(); 
  4.     if (value > 0.5) { 
  5.         keepMoving = false
  6.     } 

乍一看,似乎每次循環(huán)都會執(zhí)行`let value = Math.random();`,但實際上只執(zhí)行一次,執(zhí)行一次后,declare 的部分將會從代碼中移除。

三、變量初始化的問題TDZ問題

除了var之外,let也將舉起,只是不會被初始化:

  1. var studentName = "Timy"
  2.  
  3.     console.log(studentName); 
  4.     // ??? 
  5.  
  6.     let studentName = "Smith"
  7.  
  8.     console.log(studentName); 
  9.     // Smith 

第一個console不會輸出 "Timy"而是會報錯,說明let也被舉起,只是沒有被初始化。

解決此問題的方法就是將所有的let,const等全部都寫到頂部。

 

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2009-06-11 13:26:16

Java數(shù)組聲明創(chuàng)建

2012-05-23 12:46:53

JavaJava類

2009-07-03 16:21:33

Java的聲明和初始化Java

2009-08-31 10:38:34

C#變量初始化

2020-12-03 09:50:52

容器IoC流程

2015-10-30 09:51:19

Java重寫初始化隱患

2010-03-25 14:42:33

2011-06-09 14:13:06

C++JAVA缺省初始化

2012-04-09 13:43:12

Java

2009-10-20 14:03:48

VB.NET數(shù)組聲明VB.NET數(shù)組初始化

2021-03-05 07:45:59

JSreducemap

2023-07-13 09:13:18

Docker容器

2023-12-04 10:57:52

函數(shù)C++

2024-06-17 10:45:57

C語言編程變量容器

2011-03-16 10:52:20

2012-03-13 13:38:42

Java

2009-06-10 16:17:00

Netbeans JT初始化

2021-07-07 05:00:17

初始化源碼

2010-02-24 15:41:19

Linux Light

2021-04-08 09:14:24

js前端函數(shù)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 人人种亚洲| av中文在线| 亚洲一区二区在线播放 | 久久精品在线 | 成人av免费 | 欧美日韩一区二区三区四区 | 青青草国产在线观看 | 欧洲精品一区 | 在线免费视频一区 | yeyeav| 精品自拍视频在线观看 | 久久久精 | 国外激情av| 一级毛片,一级毛片 | 黑人精品| 一级a爱片久久毛片 | 国产美女久久久 | 欧州一区二区三区 | 亚洲精品一区二区三区中文字幕 | 亚洲欧美精品在线观看 | 欧美一区二区三区日韩 | 亚洲高清在线观看 | 国产成人jvid在线播放 | 91久久国产精品 | 热久久免费视频 | 国产一区二区三区视频 | 久久久免费观看视频 | www.天堂av.com | 日韩乱码一二三 | 久热国产精品视频 | 国产精品欧美一区二区三区 | 91人人看 | 天天爽综合网 | 天天操天天射综合 | 日本福利片 | av第一页 | 日韩视频一区 | 精品一区二区三区在线观看国产 | 欧美日韩91 | av中文在线播放 | 国产粉嫩尤物极品99综合精品 |