ES6深刻淺出-1 新版變量聲明:let 和 const-3.視頻 相關面試題

執行順序問題

請問console.log輸出的值是多少

輸出的確定是1


假如這裏有一行未知的代碼 會打印出幾?

若是這段未知的代碼是a=2。那麼其實console輸出的就是2

只關心代碼,沒有關心代碼執行的順序,這就是這條面試題最大的陷阱。
最終輸出的是
html

語法問題

i雖然是寫在for循環裏面,可是它依然是往外跑的

i等於5的時候要執行i++而後進入不到循環裏面了。因此當等於6的時候循環內就不成立, 就執行最下面的console的輸出





若是這行代碼是用戶點擊的時候去執行的話。那麼這行代碼就是 最終的6.



按鈕點擊屢次 輸出的結果都是6


http://js.jirengu.com/?html,output



光標上面那行代碼的最後,一回車,就生成了以下的代碼

當點擊導航3的時候輸出的值是幾???



執行代碼。頁面默認加載完成,i就已是6了

怎麼讓點擊導航1就打印出1 點擊導航2就打印出2呢????

打印出來一直是6,是由於咱們的只有一個i

用變量j來接受變量i

打印出來了5,

爲何是5呢。i雖然一直++一直加到了6,可是j並無一直++。因此i到6 就不會進入循環了。 j的值一直最高就是5了。
由於j這個傻逼變量會提高。j會提高到這裏。


始終用同一個j去接收同一個i,也就是這個事件裏面只有一個i和j
默認輸出i和j的值
程序員

let

用let,這個j就不會跑到外面去了。


let的做用域只有選中的一塊區域

循環點擊輸出的結果
es6

若是不用let,就要搞出一個新的做用域

新的做用域通常是用當即執行函數。這個j的函數就是在這個函數裏面。不會出去的

如今的這個j就是每一個循環一個j

這就是js程序員在es6的語法以前是多麼的痛苦。

也能夠這麼寫,意思是j就是第一個參數
面試

若是把i用let來修飾



i的做用域就在選中的這塊代碼。因此花括號內是訪問不到i的

for循環的語法作了一個魔法,每次進入循環的時候。在循環內建立一個i,這個i等於外面的i的值。

咱們把外面的i改爲下劃線的i,這樣好區分

這一行代碼是js自動加的 咱們看不見。






一共7個i,圓括號內一個i貫穿了循環的始終

以及每次循環,都會產生的塊做用域的i,0到5 因此裏面是6個i,加上最外面的i 就是7個i

 函數

結束

相關文章
相關標籤/搜索