【发布时间】:2016-03-12 06:27:14
【问题描述】:
我试图通过setTimeout 函数了解回调。
我有两组代码:
for (var i = 1; i <= 10; i++) {
(function(callback,i){
setTimeout(function(){
callback(i)
}, 0);
})(function(val){console.log(val)},i);
它可以很好地打印 1,2,3,.... 10
但是当我试图将setTimeout的回调函数抽象为:
for (var i = 1; i <= 10; i++) {
(function(callback,i){
setTimeout(func, 0);
})(function(val){console.log(val)},i);
}
function func(){
callback(i)
}
它给了我错误说明
Uncaught ReferenceError: callback is not defined
我知道该 func 函数声明的词法范围存在一些问题。但无法理解原因。 请帮助我理解这一点。
【问题讨论】:
标签: javascript callback lexical-scope