var 的作用域是函数,就是在一个函数内声明都可以。这与C 语言系列的不一样,他们的作用域是语法块,就是大括号。
所以下面的执行会打印Person 方法的i. 同样Person函数的s 也能打印。但是,person 中的var s=3;改为let s=3 就不行了,这样更严格,符合很多语言的习惯。
只是let 在老浏览器不支持。
<script>
console.log("123");
function Person(){
for(var i=0;i<4;i++)
{
var s=3;
}
console.log("for in "+ i);
}
Person();
console.log(i);
console.log(a);
</script>