代码
for (var i = 0; i< 10; i++){setTimeout((i) => {console.log(i);}, 1000,i)}
解题思路
- 使用es6的新关键字let,把作用域固定
- bind
- IIFE,立即执行函数
解法一:let
for (let i = 0; i< 10; i++){setTimeout(() => {console.log(i);}, 1000)}
解法二:bind
for (var i = 0; i< 10; i++){setTimeout(((i) => {console.log(i);}).bind(null, i), 1000)}
解法三: IIFE
for (var i = 0; i< 10; i++){setTimeout(((i) => {console.log(i);})(i), 1000)}
