一道JS题目
一開始, 程序從for開始執行, 遇到setTimeout的時候先不管, 繼續往后執行, 一直執行到循環結束.好了, setTimeout可以執行啦. 連續六個setTimeout打印出i, 而此時的i已經是6啦.
}
判斷當前i的值是否小于等于5,是的話就加1,因為你用了setTimeout,所以一秒后i的值已經變成6了,再輸出的話,就一直是6了
輸出的結果是:2.就是說{}中定義的變量i會取代{}外面的變量i,即沒有塊級作用域.
通過上面的代碼,可以看出只定義了一個變量 i ,只有在循環里面賦值為1~5,循環結束后是 6。而setTimeout中的代碼是在循環之后執行的,所以輸出的i是 6。而不是你所想的。因為 i 只有一個,不可能同時等于 1,2,3,4,5.
可以改成(建議先理解上面一段代碼,先不要糾結ES6的):
}
判斷當前i的值是否小于等于5,是的話就加1,因為你用了setTimeout,所以一秒后i的值已經變成6了,再輸出的話,就一直是6了
輸出的結果是:2.就是說{}中定義的變量i會取代{}外面的變量i,即沒有塊級作用域.
通過上面的代碼,可以看出只定義了一個變量 i ,只有在循環里面賦值為1~5,循環結束后是 6。而setTimeout中的代碼是在循環之后執行的,所以輸出的i是 6。而不是你所想的。因為 i 只有一個,不可能同時等于 1,2,3,4,5.
可以改成(建議先理解上面一段代碼,先不要糾結ES6的):
總結
- 上一篇: 萝卜肉丸的做法?
- 下一篇: php如何判断客户端是pc还是手机?