立即执行函数一般的写法是(()=>{})()这种,看到有人这么写(0,()=>{})(),想问下后面这种写法是有什么好处吗?谢谢!
2 回答
MYYA
TA贡献1868条经验 获得超4个赞
这个不存在好与坏之分,重点是为什么这么写
在js中,函数声明会被提前,所以在函数声明后加上()立即调用会抛出语法错误
functuion (){}()
//Uncaught SyntaxError: Unexpected token {
所以我们想让函数在代码的位置上才被处理,可以把函数变成函数表达式,下面举几个例子
(function(){})()
(function(){}())
+function(){}()
-function(){}()
~function(){}()
var a = function(){}()
上面的第一种写法和你问题中提到的两个写法是一样的,为什么说你提到的第二个和第一个是一样的?
因为表达式是有返回值,返回值是其结果
var a,b;//js中的,号可以连接表达式
a = 1; //此时会返回1
a = (1,2);//此时会返回2,因为,号可以连接表达式,表达式的结果为2
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
你还可以写成
(true,"今天好凉快",3.1415926,["草稿纸"],new Map(),()=>{console.log("阿嚏")})()
说正经的就是js逗号运算符按顺序执行表达式,并且获得最右边表达式的值
好处?也许是能把人忽悠瘸吧(顺带执行最后一个逗号之前的表达式呗)
添加回答
举报
0/150
提交
取消