如題,謝謝!
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!
js 中被判為 false 的只有以下幾個:
0
NaN
false
''
null
undefined
因此:
我覺得你的問題可以改成!(function foo(){})回傳false,!(function foo(){})()回傳true?
因為程式碼function foo(){}()執行會回傳Uncaught SyntaxError: Unexpected token的錯誤。
前者是對非空字串取反,非空字串的布林值是true,取反之後自然是false;
後者是自執行函數的回傳值取反,回傳值是undefined,轉換為布林值是false,取反是true。
以上為個人見解,歡迎討論。 Thanks!