javascript变量提升
<script> function aa(){ console.log("before", i); setTimeout(function () { console.log("setTimtout", i); }); for(var i = 0; i<= 3; i++){ console.log("for", i); } console.log("after", i); } aa(); </script>
结果:
before undefined
for 0
for 1
for 2
for 3
after 4
setTimtout 4
分析:
变量i定义在for中,首次进入aa函数时,还没有执行for,所以i变量没有定义。当执行了for之后,setTimeout可以打印出i变量,说明i变量的作用域提升了。