不积跬步,无以至千里;不积小流,无以成江海
今天在一个js文件里面看到 !function(){}()
这种写法,看不懂是什么意思,就网上查找资料。
我们普通的函数声明:
function f1(){
alert("这是一个函数");
}
我们声明f1函数,就可以通过
f1();
的方式调用;
但是如果我们直接在函数声明后面添加()
就会报错:
function f1(){
alert("这是一个函数");
}()
平时我们可能对括号来调用匿名函数的方式更习惯:
(function(){alert("这是一个匿名函数")})()
或者:
(function(){alert("这是一个匿名函数")}())
当我们使用
()
时,它将一个函数声明转化成了一个表达式,解析器不再以函数声明的方式处理函数,而是作为一个函数表达式处理,任何消除函数声明和函数表达式间歧义的方法,都可以被解析器正确识别
比如下面这些类型都是可以的
!function(){alert("这是一个匿名函数")}()
+function(){alert("这是一个匿名函数")}()
-function(){alert("这是一个匿名函数")}()
~function(){alert("这是一个匿名函数")}()
跑得慢,听到的是骂声; 跑得快,听到的就只是风声
网友评论