搜尋

首頁  >  問答  >  主體

javascript - 為什麼!function foo(){}回傳false,!function foo(){}()回傳true?

如題,謝謝!

女神的闺蜜爱上我女神的闺蜜爱上我2814 天前809

全部回覆(2)我來回復

  • 淡淡烟草味

    淡淡烟草味2017-06-30 10:00:06

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

    • 0

    • NaN

    • false

    • ''

    • null

    • undefined

    因此:

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

    回覆
    0
  • 高洛峰

    高洛峰2017-06-30 10:00:06

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

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

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

    回覆
    0
  • 取消回覆