为了账号安全,请及时绑定邮箱和手机立即绑定

为什么function 前要加个!

!function(){

    var localData = "localData here";

    document.addEventListener('click',

        function(){

            console.log(localData);

});

}();

正在回答

2 回答

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

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

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

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

例如:

!funciton() {

}();


而省略了!的话:

function() {

}();


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

function f() {

}();


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

function f(){}


(); // 这里报错


3 回复 有任何疑惑可以回复我~
#1

chenzhicai 提问者

非常感谢!
2016-02-14 回复 有任何疑惑可以回复我~
#2

newBegining

请问为什么一开始的 function outer() var localval=30 return function(){ return localval } } var func=outer() func(); 请问这里面的 function(){ return localval } 为什么不用加函数名?这个算函数声明吗??
2016-05-08 回复 有任何疑惑可以回复我~
#3

FDU_XN 回复 newBegining

这个不是匿名函数的吗
2016-05-20 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么function 前要加个!

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号