請問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,這個j就不會跑到外面去了。
let的做用域只有選中的一塊區域
循環點擊輸出的結果
es6
新的做用域通常是用當即執行函數。這個j的函數就是在這個函數裏面。不會出去的
如今的這個j就是每一個循環一個j
這就是js程序員在es6的語法以前是多麼的痛苦。
也能夠這麼寫,意思是j就是第一個參數
面試
i的做用域就在選中的這塊代碼。因此花括號內是訪問不到i的
for循環的語法作了一個魔法,每次進入循環的時候。在循環內建立一個i,這個i等於外面的i的值。
咱們把外面的i改爲下劃線的i,這樣好區分
這一行代碼是js自動加的 咱們看不見。
一共7個i,圓括號內一個i貫穿了循環的始終
以及每次循環,都會產生的塊做用域的i,0到5 因此裏面是6個i,加上最外面的i 就是7個i
函數