먼저 Null과 Untefined의 차이점에 대해 이야기 해 봅시다.
선언되었지만 초기화되지 않은 및 선언되지 않은 변수에서 Typeof를 실행하면 "정의되지 않은"을 반환합니다.
NULL은 빈 객체 포인터를 의미하고 작동 유형은 "객체"를 반환합니다.
일반적으로 변수의 값은 명시 적으로 정의되지 않은 상태로 설정되지 않지만 반대로 NULL은 객체를 저장하려는 변수의 경우 NULL 값을 저장하기 위해 명시 적으로 허용되어야합니다.
var bj; 경고 (bj); // "정의되지 않은"bj = null; alert (typeof bj); // "Object"Alert (bj == null); // truebj = {}; alert (bj == null); //거짓Deng 선임 형제에 의해 다음 두 가지 기능이 나에게 주어졌습니다. 감사합니다.
/** 객체가 빈 객체인지 여부를 감지합니다 (읽을 수있는 속성이 없음). *이 메소드는 객체 자체의 특성과 프로토 타입에서 상속 된 특성을 모두 감지합니다 (따라서 hasownproperty를 만들지 않은). */function isempty (obj) {for (var name in obj) {return false;} return true;};여기에 언급 된 빈 객체가 {} 또는 null입니까? 나는 시험 사례를 썼다.
var a = {}; a.name = 'realwall'; console.log (isempty (a)); //falseconsole.log (isempty ({})); //trueconsole.log(isempty(null)); // true // 매개 변수가 null 일 때 구문 오류가 없음, 즉 null null 포인터에 속성을 추가 할 수는 없지만 or in in in 문을 사용할 수는 없지만 객체가 빈 개체인지 여부를 감지 할 수 있습니다 (읽기 가능한 속성이 포함되지 않음). *이 방법은 물체 자체의 특성 만 감지하고 프로토 타입에서 상속 된 특성을 감지하지 않습니다. */function은 isOwnempty (obj) {for (var name in obj) {if (obj.hasownproperty (name)) {return false;}} return true;};{}와 null의 차이 :
이것은 매우 중요합니다.
var a = {}; var b = null; a.name = 'realwall'; b.name = 'jim'; // 오류가 여기에보고됩니다. B는 이미지의 널 포인터이며 속성은 일반 객체처럼 직접 추가 할 수 없습니다. b = a; b.name = 'Jim'; // a와 b는 현재 동일한 객체를 가리 킵니다. A. 이름, B. 이름은 모두 '잼'입니다.