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

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


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

我们普通的函数声明:

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

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

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

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

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

或者:

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

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

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

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


你可能感兴趣的:(javascript里function之前加上感叹号'!'会怎么样)