1.js没有快级作用域的概念
function a(){
for(var i = 0;i <10;i++){
}
console.log(i)//10
}
a()//10;
c或者java中i只会在for循环中定义,for循环后就会被销毁,而js并不会,他会在for后任然可以被访问。
2.用于块级作用域(通常称为私有作用域)语法:
(function(){
//这是块级作用域
})()
立即调用
第一个()为一个函数表达式
第二个()为调用
function a(){
(function(){
for(var i = 0;i <10;i++){
}
})();
console.log(i)//"i is not defined"
}
a()//"i is not defined";
利用立即执行函数可以减少向全局变量添加变量和函数u,可以减少污染全局环境。并且可以减少闭包占用内存的问题,因为作用域会在执行完后立即销毁
(function (){
var a = "pppp";
alert(a);
})()