javascript - Warum gibt !function foo(){} false und !function foo(){}() true zurück?
女神的闺蜜爱上我
女神的闺蜜爱上我 2017-06-30 09:58:06
0
2
815

Genauer Titel, danke!

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

Antworte allen(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!

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage