Jquery 为什么呢!document.body返回错误?

Jquery 为什么呢!document.body返回错误?,jquery,html,Jquery,Html,我一直在查看并试图了解他们的: $(document).ready() 功能正常 在第407行我找到了这部分: 如果(!document.body){ 哪些接缝是确定文档是否已加载的关键点 我想知道的是: 为什么: !document.body 返回False while: document.body 返回:[object HTMLBodyElement] 只需删除第一个:.innerHTML (经过一个小时的搜索和阅读,我在谷歌上找不到合适的答案,所以现在我希望这里有一些专业人士可以帮助我,谢

我一直在查看并试图了解他们的:
$(document).ready()

功能正常

在第407行我找到了这部分:
如果(!document.body){

哪些接缝是确定文档是否已加载的关键点

我想知道的是:
为什么:
!document.body

返回
False

while:
document.body

返回:
[object HTMLBodyElement]

只需删除第一个:
.innerHTML

(经过一个小时的搜索和阅读,我在谷歌上找不到合适的答案,所以现在我希望这里有一些专业人士可以帮助我,谢谢!)


编辑:是的,我知道
!document.body
来自JavaScript而不是JQuery,最终JQuery是用JavaScript代码构建的。

你所问的与JQuery无关。事实上,它是JavaScript:

如果主体已加载,document.body始终返回true。因此!document.body意味着如果主体尚未加载,则执行一些操作

根据文档(),该属性适用于大多数浏览器的早期版本


正式地,从:

12.5.9逻辑非运算符(!)#

7.1.2托布利安(论点)#

抽象操作ToBoolean将参数转换为类型为的值 符合表10的布尔值:表10:ToBoolean转换

Argument Type     Result 
Undefined     Return false. 
Null          Return false.
Boolean       Return argument. 
Number        Return false if argument is +0, -0, or NaN; otherwise return true. 
String        Return false if argument is the empty String (its length is zero); 
                      otherwise return true. 
Symbol        Return true. 
Object        Return true.

我想我已经理解了发生的事情和我误解的内容。
我最初只希望有2种不同的状态(真/假),但事实上有4种不同的状态,如下表所示:

| Page loading state    |       document.body       | !document.body |
|=======================|===========================|================|
| Before page is loaded |            ?              | !false -> true |
|-----------------------|---------------------------|----------------|
| After page is loaded  | [object HTMLBodyElement]  | !true -> false |

我的错误是,我只查看了“加载后”行,并在
document.body
列中删除了
true

浏览器兼容性原因iirc。旧浏览器的一个遗迹每个浏览器都不一样。注释没有提示原因吗?另请参见
确保body存在,至少,以防IE有点过分热情(罚单#5443)。
当我尝试:
document.body
在W3Schools网站上,我没有得到
False
/
True
答案,我得到的是
False
/
[object HTMLBodyElement]
答案。
| Page loading state    |       document.body       | !document.body |
|=======================|===========================|================|
| Before page is loaded |            ?              | !false -> true |
|-----------------------|---------------------------|----------------|
| After page is loaded  | [object HTMLBodyElement]  | !true -> false |