您的位置:首页技术文章
文章详情页

javascript - 为什么!function foo(){}返回false,!function foo(){}()返回true?

浏览:83日期:2023-04-21 13:50:28

问题描述

如题,谢谢!

问题解答

回答1:

js 中被判为 false 的只有以下几个:

0

NaN

false

’’

null

undefined

因此:

!function foo () {} == !(function foo () {}) == false

!function foo(){}() == !(function foo () { return undefined })() == !undefined == true回答2:

我觉得你的问题可以改成!(function foo(){})返回false,!(function foo(){})()返回true?因为代码function foo(){}()执行会返回Uncaught SyntaxError: Unexpected token的错误。

前者是对非空字符串取反,非空字符串的布尔值是true,取反之后自然是false;后者是自执行函数的返回值取反,返回值是undefined,转化为布尔值是false,取反是true。

以上为个人见解,欢迎讨论。Thanks!

标签: JavaScript