为什么function 前要加个!

来源:7-1 [JavaScript]理解闭包

chenzhicai

2016-02-01 10:34

!function(){

    var localData = "localData here";

    document.addEventListener('click',

        function(){

            console.log(localData);

});

}();

写回答 关注

2回答

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

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

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

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

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

    例如:

    !funciton() {

    }();


    而省略了!的话:

    function() {

    }();


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

    function f() {

    }();


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

    function f(){}


    (); // 这里报错


    FDU_XN 回复newBeg...

    这个不是匿名函数的吗

    2016-05-20 20:03:28

    共 3 条回复 >

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

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

JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281098 学习 · 1048 问题

查看课程

相似问题