前述のとおり、ありがとうございます!
高洛峰2017-06-30 10:00:06
あなたの質問は、!(function foo(){}) returns false、!(function foo(){})() returns true?に変更できると思います。
コード関数 foo(){}() は Uncaught を返すためです。実行時 SyntaxError: 予期しないトークン エラー。
前者は空でない文字列を否定するもので、空でない文字列のブール値は否定後は当然 false になります。
後者は自己実行関数の戻り値を否定します。値が未定義であり、ブール値に変換された場合は false、その否定は true です。
上記は個人的な意見ですので、議論を歓迎します。ありがとう!