cari

Rumah  >  Soal Jawab  >  teks badan

javascript - js的函数的执行

    function a(){
        alert("a");
    }();

这段代码为什么不能弹出a,,求解答。谢谢

怪我咯怪我咯2897 hari yang lalu244

membalas semua(2)saya akan balas

  • 巴扎黑

    巴扎黑2017-04-10 15:18:06

    你有很多种方法让他弹出a,比如:

    ~function a(){
        alert("a");
    }();
    
    -function a(){
        alert("a");
    }();
    
    +function a(){
        alert("a");
    }();
    
    !function a(){
        alert("a");
    }();
    

    当然,最正统的是这样:

    (function a(){
        alert("a");
    })();
    

    原理是: 通过前面的符号,让这个语句强制解析成表达式,再加上你最后的一对小括号,让表达式执行,美其名曰 立即执行的函数表达式(IIFE)。

    再扯点。。

    你的函数
    
    function a(){
        alert('a');
    }
    
    可以用函数字面量来写,即
    
    var a = function(){
        alert('a');
    }
    
    这样的话,你通过这样就可以执行函数a了
    
    a(); // alert  ==> a
    

    所以
    
    在你的函数外没套上小括号的时候,像这样
    
    function a(){
        alert('a');
    }                 // 语句
    
    (function a(){
        alert('a');
    })               // 表达式
    
    而后面跟的小括号() 是让你的表达式执行而已
    
    (function a(){
        alert('a');
    })()
    
    就像这样
    
    a()
    

    balas
    0
  • 高洛峰

    高洛峰2017-04-10 15:18:06

    (function a(){
        alert("a");
    })();
    


    楼上说得对,表达式语句不能以 function 开头。
    参考 http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262....

    balas
    0
  • Batalbalas