函数表达式---模仿块级作用域

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);
    })()

你可能感兴趣的:(Javascript)