//如果你不在乎返回值,可以这么做!function(){/*code*/}();~function(){/*code*/}();-function(){/*code*/}();+function(){/*code*/}();学习的时候,看了本站和一些第三方技术站的帖子,他们有的在文章中写到上面的代码。我知道很多匿名都是以()来执行调用的。但为什么他们说如果不在乎返回值可以用!+~这些符号。我不理解他们说的返回值是什么?我第一反应是这样!function(a){alert(a)}(1000);但在结果返回的是1000.如果按照他们说的,不应该返回的是布尔值吗?为何是1000所以到这里有些不太理解了。还请各位指定迷津。
2 回答
万千封印
TA贡献1891条经验 获得超3个赞
第一个问题,关于函数返回值:(function(){console.log('result')})();//result//undefined这个IIFE执行后,会log字符串result,但是因为这个函数没有定义返回值,所以会返回undefined第二个问题:!function(a){alert(a)}(1000);上面的这个IIFE可以拆解为:vartemp=function(a){alert(a)}temp(1000);因为你传入了1000,所以它会打印1000,但是因为这个函数依然没有返回值,所以会返回undefined返回值和打印的结果不是一回事!如果想看到被!作用后的结果,可以改写成这样!function(a){alert(a);returna;}(1000);//alert==>1000//return==>false
幕布斯6054654
TA贡献1876条经验 获得超7个赞
!function(a){alert(a)}(1000);如同functiontest(a){alert(a);}test(1000)只是不需要定义test函数
添加回答
举报
0/150
提交
取消