2017-04-17 5 views
0

나는 source code for JQuery을보고 어떻게 이해 했는가 :
$(document).ready()
기능이 작동합니다.! document.body가 False를 반환하는 이유는 무엇입니까?

그리고 행 (407)에 나는이 부분 발견 : 문서가로드되거나되지 않은 경우 결정하는 열쇠가 될 솔기
if (!document.body) {
합니다. 궁금 무엇

은 다음과 같습니다
이유는 무엇입니까 :
!document.body
반환 False?

동안 :
document.body
반환 : [object HTMLBodyElement]
You can try it here 바로 제거 첫째 : .innerHTML

(I 그래서 지금은 희망 & 읽기를 검색 한 시간 후 구글과 적절한 답을 찾을 수 없습니다 여기 덕분에 나를 도울 수있는 전문가들이있다.)

편집 : 예 나는 !document.body이 JQuery 대신 JavaScript에서 나왔다는 것을 알았고, 결국 JQuery는 JavaScript 코드로 작성되었습니다.

+0

브라우저 호환성 이유 iirc. oldIE 유물 –

+0

각 브라우저가 다릅니다. –

+0

이유에 대한 의견 힌트가 없습니까? 또한 https://developer.mozilla.org/en-US/docs/Web/API/Document/body#Browser_compatibility –

답변

0

감사합니다
나는 무슨 일이 일어 났는지, 그리고 내가 잘못 이해 한 것을 이해했다고 생각합니다.
나는 원래 단지 (참/거짓)이 개 여러 가지 상태를 예상하지만, 실제로는 4 개 가지 상태는이 표에서와 같이,이 있습니다 :

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

내 오류가 난 단지 "로드 된 후"에서 본했다 - 행과 ext37 document.body 열에 볼 수 있습니다.

1

당신이 묻는 것은 jQuery와 아무 관련이 없습니다. 사실 자바 스크립트입니다 :

body가로드되면 항상 true를 반환합니다. 그래서! body.body는 몸체가 아직로드되지 않았 으면 어떤 행동을 취합니다.

는 문서 (https://developer.mozilla.org/en-US/docs/Web/API/Document/body)에 따르면,이 건물은 브라우저

enter image description here 대부분의 이전 버전에서 작동합니다.

+0

W3Schools 웹 사이트에서'document.body'을 시도 할 때'거짓 /'True '답변을 얻지 못하면'거짓 /'[객체 HTMLBodyElement] 응답을 얻습니다. –

0

본질적으로 유형 변환 때문입니다. ! 연산자는 개체에서 부울 "true"값으로 형식 변환을 수행 한 다음이를 "false"값으로 반전합니다.

공식적으로 ECMA-262 Ecmascript spec에서 (!)

12.5.9 논리 NOT 연산자 #

Let expr be the result of evaluating UnaryExpression. 
Let oldValue be ToBoolean(? GetValue(expr)). 
If oldValue is true, return false. 
Return true. 

7.1.2 ToBoolean (인수) #

ab 트랙트 동작 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. 
관련 문제