猿问

JS一个立即执行函数表达式的疑问

//如果你不在乎返回值,可以这么做
!function(){/*code*/}();
~function(){/*code*/}();
-function(){/*code*/}();
+function(){/*code*/}();
学习的时候,看了本站和一些第三方技术站的帖子,他们有的在文章中写到上面的代码。
我知道很多匿名都是以()来执行调用的。但为什么他们说如果不在乎返回值可以用!+~这些符号。我不理解他们说的返回值是什么?
我第一反应是这样!function(a){alert(a)}(1000);但在结果返回的是1000.如果按照他们说的,不应该返回的是布尔值吗?为何是1000
所以到这里有些不太理解了。还请各位指定迷津。
收到一只叮咚
浏览 388回答 2
2回答

万千封印

第一个问题,关于函数返回值:(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

!function(a){alert(a)}(1000);如同functiontest(a){alert(a);}test(1000)只是不需要定义test函数
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答