1 回答
TA贡献1798条经验 获得超7个赞
把for()的四次循环展开其实会好理解一点。
变成如下代码:
func = function(cb, num){
return function (){
console.log(num)
cb()
}
}(func, 3)
func = function(cb, num){
return function (){
console.log(num)
cb()
}
}(func, 2)
func = function(cb, num){
return function (){
console.log(num)
cb()
}
}(func, 1)
func = function(cb, num){
return function (){
console.log(num)
cb()
}
}(func, 0)
实际上循环是对func进行了四次赋值,你的输出结果中的0是
console.log(num)
的输出结果,而之后的1,2,3则是
cb()
的输出结果。
为什么cb()是func()却会输出1,2,3呢?是因为在上一次的赋值里
func()输出的是1,2,3 所以在一次的赋值中cb()输出1,2,3 在这之前,console.log()输出0。
这样就是为什么会输出0,1,2,3的结果的原因了。
添加回答
举报