suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Warum gibt !function foo(){} false und !function foo(){}() true zurück?

Genauer Titel, danke!

女神的闺蜜爱上我女神的闺蜜爱上我2814 Tage vor812

Antworte allen(2)Ich werde antworten

  • 淡淡烟草味

    淡淡烟草味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

    Antwort
    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!

    Antwort
    0
  • StornierenAntwort