今天去TypeScript官方文档中看到了这么一个例子
for (var i = 0; i < 10; i++) {
setTimeout(function() { console.log(i); }, 100 * i);
}
问打印的结果是什么?
首先我来说结果吧,打印的都是10
对于这个问题,我闲的无聊,发给两个前端同事,都是两年工作经验的,一个拿到代码就去实验,对于结果为10表示疑问。另一个也表示不懂为什么输出的都是10.
可以看出,程序员大多数只在乎怎么用,从不在乎到底是为什么,就如同有人会说:‘你特么看源码有个屁用啊,有本事自己写一个框架啊。上班用得到么?......’。
对于这种底层的东西确实很烦,但是对于个人来说,工作确实都一样工作,唯一不同的是人家知道原理,而你只会也只是单纯会用而已。我想这就是高级与初级的不同,高级工程师比较稀缺的原因吧!
回归正题,我给个提示吧,自己摸索去!!:
1.了解let和var的区别
2.同步和异步到底是什么?
那么下面输出什么呢??????这也是解决的方法
for (var i = 0; i < 10; i++) {
// capture the current state of 'i'
// by invoking a function with its current value
(function(i) {
setTimeout(function() { console.log(i); }, 100 * i);
})(i);
}