Js 는 인자 (String, Array, Object) 가 undefined 인지 값 이 비어 있 는 지 판단 합 니 다.
여기 서 다음 과 같은 데이터 값 을 '빈 값' 으로 정의 합 니 다.
• undefined • null • 빈 문자열 및 빈 문자열: ',' ' 등.빈 배열: [] • 빈 대상: {}
이 를 제외 한 데이터 값 은 모두 비어 있 지 않다 고 생각 합 니 다.
그 중에서 null 과 undefined 는 쉽게 식별 되 지만 다른 유형 에 대해 서 는 데이터 형식 을 얻어 야 해당 하 는 방법 으로 데이터 가 비어 있 는 지 확인 할 수 있 습 니 다.가장 생각 하기 쉬 운 방법 은 type: of 연산 자 를 이용 하 는 것 입 니 다.
if(typeof data === 'number') {
//deal with numbers
}
그러나 type of 가 되 돌아 오 는 형식 문자열 은 'object', 'function', 'number', 'boolean', 'string', 'undefined' 등 여섯 가지 만 있 습 니 다. Date, RegExp 대상 은 {} 으로 만 든 대상 과 구분 할 수 없습니다.또한 typeof 는 (String, Number, Boolean) 와 대응 하 는 기본 포장 유형 데이터 에 대해 각각 다른 값 을 되 돌려 줍 니 다. 예 를 들 어:
console.log(typeof false); //'boolean'
console.log(typeof new Boolean(false)); //'object'
console.log(typeof 1); //'number'
console.log(typeof new Number(1)); //'object'
console.log(typeof ''); //'string'
console.log(typeof new String('')); //'object'
이것 은 우리 의 판단 에 도 일정한 영향 을 미친다.
instanceof 로?이 는 대상 만 판단 할 수 있 을 뿐 다 중 frame 시 여러 개의 같은 대상 이 prototype 을 공유 하지 않 는 문제 가 있어 다른 frame 에서 얻 은 대상 을 정확하게 판단 할 수 없다.
다행히 가장 간단 하고 믿 을 만 한 방법 이 하나 더 있 습 니 다. Object. prototype. toString.서로 다른 유형의 데이터 에 대해 이 방법 은 '[object Object]', '[object Array]', '[object String]' 과 같은 문자열 을 되 돌려 주어 판단 하기에 매우 편리 하 다.주의해 야 할 것 은 IE8 과 그 이하 의 브 라 우 저 에서 이 방법 은 null, undefined, window 등에 대해 '[object Object]' 로 돌아 갈 것 입 니 다. 그러나 다행히 이것 은 우리 가 빈 대상 을 판단 하 는 데 영향 을 주지 않 습 니 다.
다음은 바로 코드 를 올 리 고 설명 은 주석 을 보 세 요.
var isEmptyValue = function(value) {
var type;
if(value == null) { // value === undefined || value === null
return true;
}
type = Object.prototype.toString.call(value).slice(8, -1);
switch(type) {
case 'String':
return !$.trim(value);
case 'Array':
return !value.length;
case 'Object':
return $.isEmptyObject(value); // for...in , key false
default:
return false; //
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.