问答详情
源自:7-1 [JavaScript]理解闭包

为什么function 前要加个!

!function(){

    var localData = "localData here";

    document.addEventListener('click',

        function(){

            console.log(localData);

});

}();

提问者:chenzhicai 2016-02-01 10:34

个回答

  • stevesasuke
    2016-02-12 13:58:29
    已采纳

    这个问题老师回答过了...http://www.imooc.com/qadetail/70621

    不仅可以用!,还可以用+, -, ~都可以。

    解释器在解释一个语句时,如果以function开头,就会理解为函数声明。

    而前面加一个!可以让解释器理解为函数表达式,这样就可以立即调用了。

    例如:

    !funciton() {

    }();


    而省略了!的话:

    function() {

    }();


    就会理解为函数声明,而函数声明没有名字会报错。如果有函数名:

    function f() {

    }();


    还是会报错,因为function f(){}函数声明会被前置,相当于:

    function f(){}


    (); // 这里报错


  • qq_静_20
    2016-02-01 11:01:04

    防止受到其他一些方法的影响!