2012-12-27 2 views
6

나는 JavaScript가 내부적으로 null 값을 저장하는 방법을 항상 궁금해했다. null은 다른 값과 다릅니다. 범위의 변수가 일종의 구조 배열에 저장되고 각 구조는 변수에 상응한다고 상상해 봅니다. 이 구조체에는 "null"이라는 부울 속성이 있습니다.JavaScript는 내부적으로 null 값을 어떻게 저장합니까?

나 자신이 V8 소스 코드에서 찾아 것이지만, 꽤

나는 Google에서 아무것도 찾을 수 없습니다. 대부분의 결과는 같은 질문에 관련이 있었다 "어떻게에 C++ 코드 :(에서 길을 잃었하고 있어요 변수가 정의되어 있지 않거나 null인지 판단하십시오. "또는 이와 유사합니다.

+3

아마도 인터프리터에 따라 다르 겠지만, 나는 그것이 단순히 0과 다른 점을 알면 놀랄 것입니다. 그것은 중요한 세부 사항이 아닙니다. – Pointy

+1

null, undefined, false, 0 등 여러 "위조 된"값이 있음을 기억하십시오. 각 변수에 값이 널 (null)인지, 정의되지 않은지, 숫자인지 여부를 나타내는 "type"필드가 있습니다 부울, 객체 등 – cdhowie

+0

@Pointy 확실히, 그것은 인터프리터에 달려 있습니다. null 값을 0으로 저장한다면'(null === 0)'이'false'를 반환하는 이유는 무엇입니까? –

답변

3

약한 유형의 스크립팅 언어 인 JavaScript는 모든 유형의 값을 지원하는 변형 유형을 가지고있을 것입니다. PHP는 동일한 유형의 변수를 사용한다고 생각합니다. 다른 언어로도 알려져 있지만 COM 자동화에서 중요한 역할을합니다.

형식과 값을 포함하는 구조체 값은 단순한 값이거나 더 크거나 더 복잡한 값을 가리키는 포인터 일 수 있습니다. null은 지원되는 유형 중 하나 일 뿐이며,이 경우 값 자체가 아무런 영향을 미치지 않습니다.

그러나 JavaScript는 많은 통역사를 알고 있으므로 구현 방법에 대한 규칙이 없으므로 걱정할 필요가 없습니다. 보통 JavaScript로 작성해서는 안되는 시간이 중요한 애플리케이션의 경우 이와 같은 기본 기술에 대해서만 알면됩니다.

+2

'null'은 별개의 타입이 아닙니다. 그것은'Object' 참조 값을위한 빈 값입니다. – Pointy

+0

일반적으로 알고있는 변형 레코드의 구현에 대해 이야기하고있었습니다. Javascript는 'null'을 특수한 유형의 객체로 설명 할 수 있지만 내부적으로 실제로 객체가 있는지 의심 스럽습니다. – GolezTrol

+1

@Pointy ('typeof (null)'이''object "'를 반환한다는 것에 조금 놀랐지 만) –

관련 문제