javascript里function之前加上感叹号'!'会怎么样

不积跬步,无以至千里;不积小流,无以成江海


今天在一个js文件里面看到 !function(){}() 这种写法,看不懂是什么意思,就网上查找资料。

我们普通的函数声明:

function f1(){
    alert("这是一个函数");
}

我们声明f1函数,就可以通过 f1();的方式调用;
但是如果我们直接在函数声明后面添加()就会报错:

function f1(){
    alert("这是一个函数");
}()

平时我们可能对括号来调用匿名函数的方式更习惯:

(function(){alert("这是一个匿名函数")})()

或者:

(function(){alert("这是一个匿名函数")}())

当我们使用()时,它将一个函数声明转化成了一个表达式,解析器不再以函数声明的方式处理函数,而是作为一个函数表达式处理,任何消除函数声明和函数表达式间歧义的方法,都可以被解析器正确识别
比如下面这些类型都是可以的

!function(){alert("这是一个匿名函数")}()
+function(){alert("这是一个匿名函数")}()
-function(){alert("这是一个匿名函数")}()
~function(){alert("这是一个匿名函数")}()

跑得慢,听到的是骂声; 跑得快,听到的就只是风声


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容