>웹 프론트엔드 >JS 튜토리얼 >JavaScript_javascript 기술에서 null과 정의되지 않음의 차이점 소개

JavaScript_javascript 기술에서 null과 정의되지 않음의 차이점 소개

WBOY
WBOY원래의
2016-05-16 16:22:311117검색

JavaScript에는 정보가 없음을 나타내는 두 가지 특수 값인 null과 undefine이 있습니다. 개인적으로 이 두 특별한 가치의 차이는 다음과 같은 관점에서 이해될 수 있다고 생각합니다.

1.null은 정보(예: 이전에 값이 할당된 변수)를 저장하지만 컨테이너의 내용이 비어 있는 컨테이너를 나타냅니다.
2. 정의되지 않음은 정보를 저장할 컨테이너가 없음을 의미합니다.

JavaScript의 null은 대부분의 다른 프로그래밍 언어의 null과 다르지 않습니다. 이는 기본적으로 JavaScript에서 정보 값이 비어 있음을 나타내는 데 사용되며, 표현식은 다음 상황에서 정의되지 않은 결과를 반환합니다.

1. 값이 할당된 적이 없는 변수입니다.

2. 객체에 존재하지 않는 속성 값에 접근합니다.
3. 배열에 존재하지 않는 멤버에 액세스합니다.
4. return 문 없이 함수를 호출합니다.
5. return 문이 비어 있는("return;") 함수를 호출합니다.

사실 Infinity 및 NaN과 마찬가지로 undefound는 JavaScript의 전역 변수이며 ECMAScript 3에서는 다른 값을 할당할 수도 있습니다. ECMAScript 5는 이 오류를 수정하고 정의되지 않은 변수를 읽기 전용으로 만듭니다.

null과 정의되지 않음을 비교하려면 === 합동 연산자를 사용할 수 있습니다. 일반적인 == 연산자를 사용하는 경우 null과 정의되지 않음은 동일합니다.


코드 복사 코드는 다음과 같습니다.
console.log(null == 정의되지 않음);//true
console.log(null === 정의되지 않음);//false

프로그래밍하는 동안 변수에 null 값을 할당해야 하는 경우 일반적으로 정의되지 않음 대신 null을 사용합니다. 그 이유는

1. 정의되지 않음은 일반적으로 시스템 수준 및 오류 보고 수준에서 정보가 부족한 것으로 간주됩니다.

2. Null은 일반적으로 프로그래밍 수준과 논리 연산 수준에서 빈 정보 값으로 간주됩니다.

프로그램에 유형 변환이 포함된 경우 숫자 유형으로 변환할 때 null과 정의되지 않은 결과가 다릅니다.

1. 정의되지 않음을 숫자로 변환한 결과는 NaN입니다.

2. null을 숫자로 변환한 결과는 0입니다.

빈 문자열과 빈 배열을 숫자로 변환한 결과도 0이라는 점은 언급할 가치가 있습니다.

'none'을 나타내는 두 값이 JavaScript로 설계된 이유는 Ruan Yifeng의 블로그 게시물을 참조하세요.

실험

다음 실험 코드에서는 표현식 결과가 모두 정의되지 않았습니다.


코드 복사 코드는 다음과 같습니다.
var a;
console.log(a);
함수 샘플(x){

this.x = x;
}
var s = 새로운 샘플();
console.log(s.x)
console.log(s.notExistVariable);

var n = [2,3,4];

console.log(n[8]);

기능 테스트(){

//이 함수에 대한 반환 값이 없습니다
}
console.log(test());

함수 테스트2(){

반품;
}
console.log(test2());

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.