JavaScript에는 정보 부재를 나타내는 2 가지 특별 값이 있습니다 : NULL 및 UNDEFINED. 나는 개인적 으로이 두 특수 값의 차이점을 다음과 같은 관점에서 이해할 수 있다고 생각합니다.
1.Null은 정보를 저장하는 컨테이너 (예 : 이전에 값을 할당 한 변수)를 나타내지 만 컨테이너의 내용은 비어 있습니다.
2. 정의되지 않은 것은 정보를 저장하는 데 사용되는 컨테이너가 없음을 의미합니다.
JavaScript의 Null은 대부분의 다른 프로그래밍 언어에서 NULL과 다르지 않습니다. 기본적으로 정보 값이 비어 있음을 나타내는 데 사용됩니다. JavaScript에서 표현식은 다음과 같은 상황에서 정의되지 않은 결과를 반환합니다.
1. 값이 할당 된 적이없는 변수.
2. 객체에 존재하지 않는 속성 값에 액세스하십시오.
3. 배열에 존재하지 않는 멤버에 액세스하십시오.
4. 반환 명령문없이 함수를 호출하십시오.
5. 반환 문이 비어있는 함수를 호출하십시오 ( "return;").
실제로 Infinity 및 NAN과 마찬가지로 Undefined는 JavaScript의 전역 변수이며 ECMAScript 3에서 다른 값을 할당 할 수도 있습니다. ECMAScript 5이 오류를 수정하고 정의 변수를 읽기 전용으로 설정했습니다.
null과 undefined의 비교를 위해 === 합성 연산자를 사용할 수 있습니다. 일반 == 연산자가 사용되면 NULL은 정의되지 않은 것과 같습니다.
코드 사본은 다음과 같습니다.
console.log (null == undefined); // true
console.log (null === 정의되지 않은); // false
프로그래밍 프로세스 중에는 NULL 값을 변수에 할당 해야하는 경우 일반적으로 정의되지 않은 대신 NULL이 사용됩니다. 그 이유는 :
1. 정의되지 않은 것은 일반적으로 시스템 수준 및 오류보고 수준에서 정보가 부족한 것으로 간주됩니다.
2. 널은 일반적으로 프로그래밍 수준으로 간주되며 논리 작동 수준의 정보 값은 비어 있습니다.
유형 변환이 프로그램에 관여하는 경우 숫자 유형으로 변환 될 때 NULL 및 미정의 결과가 다릅니다.
1. 정의되지 않은 숫자로 변환 한 결과는 NAN입니다.
2. NULL을 숫자로 변환 한 결과는 0입니다.
빈 문자열과 빈 배열을 숫자로 변환 한 결과도 0이라는 것을 언급 할 가치가 있습니다.
"NO"를 나타내는 두 가지 값이 JavaScript로 설계된 이유는 Ruan Yifeng의 블로그 게시물을 참조 할 수 있습니다.
실험
다음 실험 코드에서 표현식 결과는 정의되지 않습니다.
코드 사본은 다음과 같습니다.
var a;
Console.log (a);
기능 샘플 (x) {
this.x = x;
}
var s = 새로운 샘플 ();
Console.log (SX)
Console.log (s.notexistVariable);
var n = [2,3,4];
Console.log (n [8]);
기능 test () {
//이 함수에 대한 반환 값이 없습니다
}
Console.log (test ());
함수 test2 () {
반품;
}
Console.log (test2 ());