美文网首页
immediately Invoked Functions Ex

immediately Invoked Functions Ex

作者: Zihowe | 来源:发表于2017-08-26 15:07 被阅读13次

    使用()将function expression放入其中,告诉编译器里面的是个expression, 立刻调用这个function。 这在很多库里面很多见。

    我想到一点是, 这样我们可以声明自己的变量而不担心和其它的冲突。
    javascript 在浏览器中,我们会把所有的代码顺序执行,包括库中的,所以名字有可能覆盖。

    
    var firstname = 'Hao';
    
    (function(name) {
       
       var greeting = "Hello ";
       console.log(greeting + name);
       
    }(firstname));
    
    // 把括号取出来也行
    (function(name) {
       
       var greeting = "Hello ";
       console.log(greeting + name);
       
    })(firstname);
    
    
    // 当执行下面这个function时, s被绑定到this的一个属性了, 所以不需要声明,不需要使用new
    func1 = function (){
        s = 'not use new';
    }
    
    func1();
    console.log(this.s);
    
    // 当执行下面这个function时,我们声明了一个变量 s, 当func结束时,这个func的执行环境没了,s也消失了即我们回到了一个没有s的主环境中。
    func2 = function (){
        var s = 'use new';
    }
    
    func2();
    console.log(func2);
    
    image.png

    下面这个例子,方程执行完后,greeting 还是 Hola,不会被影响。

    
    var greeting = "Hola";
    (function(global, name) {
        global.gg = "change the global obj";
        var greeting = "Hello ";
        console.log(greeting + name);
        
    })(window, "John");
    
    console.log(greeting);   // Hola
    

    如下图:


    image.png

    相关文章

      网友评论

          本文标题:immediately Invoked Functions Ex

          本文链接:https://www.haomeiwen.com/subject/jsomdxtx.html