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

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

為什么先計算是會報錯的?。?/h1>

為什么先計算是會報錯的???

GCT1015 2023-04-08 18:14:09
平時使用匿名函數時這種用法比較多見:(function(){return "ok"})()因為直接使用這樣的代碼 function(){return "ok"}() "()"先計算是會報錯的,但是也會看到這樣的寫法也是可行的:(function(){return "ok"}())這樣又如何解釋呢?
查看完整描述

2 回答

?
蕪湖不蕪

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

我的理解是這個括號建立了一個新的作用域。(function(){return "ok"}())中的匿名函數已經不再是定義全局作用域定義的函數了。你可以用(fOk = function(){return "ok"}());fOk();來驗證。但是函數的定義加載是優先于其調用的。但是在匿名函數中()運算符優先級更高,所以直接function(){//..}()會報錯。但是用()將這段代碼的作用于降級之后就可以了,應該因為這時函數調用運算符()執行前匿名函數就已經定義過了

查看完整回答
反對 回復 2023-04-10
?
MM們

TA貢獻1886條經驗 獲得超2個贊

(function(){return "ok"}())外面的括號只是強制運算而已,并不涉及作用域。
可以使用其他的運算符,強制運算:
void function(){return "ok"}()
+ function(){return "ok"}()
- function(){return "ok"}()
1* function(){return "ok"}()
1 & function(){return "ok"}()

查看完整回答
反對 回復 2023-04-10
  • 2 回答
  • 0 關注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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