ATG精准科技-前端面试题

1.请写出以下结果

for(var i=0; i<10; i++){
    setTimeout(function () {
        console.log(i)
    },10)
}

结果:打印10次190
解析:
考察的是作用域和异步的知识点,这是js特有的知识点,其它程序语言没有
a:遇到异步代码,程序不等待,而将代码继续执行下去,即for循环先执行完,然后再过来执行setTime里的回调,此时i已被累加到10
b:由于js语言没有块级作用域,故而定时器内的的i就是外部的i的值,所以定时器内部打印的那个i,早就是10了  

猜你喜欢

转载自www.cnblogs.com/dshvv/p/9816559.html