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