块级作用域通常称为私有作用域
- 什么叫没有块级作用域概念?
- 在块语句(if/while/do-while/for/switch)中定义的变量,实际上是在包含函数中而非语句中创建。函数内部可以随意使用它。
- 函数内部多次声明(注意只是多次声明,没有初始化),只会对后续的声明视而不见
1 | function outputNumbers(count){ |
- 用作块级作用域(私有作用域)的匿名函数语法:
1 | (function(){ |
这种语法不好理解,那么解释演化如下:
1 | var someFunction=function(){ |
无论什么地方,只要临时需要一些变量,就可以使用私有作用域。 或者要加闭包时。
1
2
3
4
5
6
7
8
9function outputNumbers(count){
(function(){
for(var i=0;i<count;i++){
alert(i);
}
})();
alert(i); //导致一个错误,因为访问不到i
}通常的用途:在全局作用域中被用在函数外部,从而限制向全局作用域中添加过多的变量和函数。或者加闭包时。