js里面没有块级作用域,例如:
for(var i=0; i<5; i++){
alert(i);
}
像这样一个简单的for循环,在Java、C#等高级语言里面i只能在循环体里面使用,循环外面是不能调用的,
但是在js里面,从i有了定义开始,就可以在函数后面的代码中随便调用。就像上面的循环外面再加一句
alert(i);打出的结果就是5;
该如何避免这种情况的出现呢,使用私有作用域:
(function(){
//这里是块级作用域(私有作用域)
})();
记住一定要给function加上括号,不加是会出错的。
因为不加括号,js将function当做关键字声明函数,而声明函数结尾是不能有括号的。