javascript - 為什麼!function foo(){}回傳false,!function foo(){}()回傳true?
女神的闺蜜爱上我
女神的闺蜜爱上我 2017-06-30 09:58:06
0
2
802

如題,謝謝!

女神的闺蜜爱上我
女神的闺蜜爱上我

全部回覆(2)
淡淡烟草味

js 中被判為 false 的只有以下幾個:

  • 0

  • NaN

  • false

  • ''

  • null

  • undefined

因此:

!function foo () {} == !(function foo () {}) == false
!function foo(){}() == !(function foo () { return undefined })() == !undefined == true
小葫芦

我覺得你的問題可以改成!(function foo(){})回傳false,!(function foo(){})()回傳true?
因為程式碼function foo(){}()執行會回傳Uncaught SyntaxError: Unexpected token的錯誤。

前者是對非空字串取反,非空字串的布林值是true,取反之後自然是false;
後者是自執行函數的回傳值取反,回傳值是undefined,轉換為布林值是false,取反是true。

以上為個人見解,歡迎討論。 Thanks!

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板