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

立即执行函数一般的写法是(()=>{})()这种,看到有人这么写(0,()=>{})(

立即执行函数一般的写法是(()=>{})()这种,看到有人这么写(0,()=>{})(

沧海一幻觉 2019-03-14 22:19:01
立即执行函数一般的写法是(()=>{})()这种,看到有人这么写(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


查看完整回答
反对 回复 2019-04-14
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

你还可以写成

(true,"今天好凉快",3.1415926,["草稿纸"],new Map(),()=>{console.log("阿嚏")})()

说正经的就是js逗号运算符按顺序执行表达式,并且获得最右边表达式的值

https://img1.sycdn.imooc.com//5cb2cd3a0001f49f04290068.jpg

好处?也许是能把人忽悠瘸吧(顺带执行最后一个逗号之前的表达式呗)


查看完整回答
反对 回复 2019-04-14
  • 2 回答
  • 0 关注
  • 1848 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信