var a=10;//全局
(function(){
var b = 20;//函数
})();
console.log(a);//10
console.log(b);//error
for(var item in{a:1,b:2}){
console.log(item);//item still in scope
}
console.log(item);
eval("var a=1");//eval
javascript没有块级作用域的概念,在块中定义的变量和在全局定义的效果是一样的,比如上面for循环中的item,外面也可以访问到。
第一种作用域是:全局作用域
第二种作用域是:函数作用域,不如b在外面是访问不到的
还有一种比较特别的eval