亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JS一個立即執行函數表達式的疑問

JS一個立即執行函數表達式的疑問

收到一只叮咚 2019-04-21 20:37:57
//如果你不在乎返回值,可以這么做!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
                            
查看完整回答
反對 回復 2019-04-21
?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

!function(a){alert(a)}(1000);
如同functiontest(a){
alert(a);
}
test(1000)
只是不需要定義test函數
                            
查看完整回答
反對 回復 2019-04-21
  • 2 回答
  • 0 關注
  • 406 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號