때때로 다음과 같은 상황이 발생합니다. 일부 프런트엔드 컨트롤이 서버에 데이터를 제출하는 데이터 확인 프로세스 중에 제출된 데이터가 비어 있는지 확인해야 합니다. 일반적인 형태의 문자열 데이터라면 잘라낸 후에 길이만 결정하면 됩니다. 여기에 필요한 데이터는 JSON.stringify(data)를 통해 다양한 유형(숫자, 문자열, 배열, 객체 등)이 될 수 있습니다. 직렬화된 후 통과되었습니다.
여기에서는 다음 데이터 값이 "null 값"으로 정의됩니다.
•정의되지 않음
•null
•빈 문자열 및 순수 공백 문자열: '', ' ' 등.
•빈 배열: []
•빈 객체: {}
이를 제외한 데이터 값은 비어 있지 않은 것으로 간주됩니다.
그중 null과 undefine은 쉽게 식별할 수 있지만, 다른 유형의 경우 해당 메소드를 사용하여 데이터가 비어 있는지 여부를 감지하려면 먼저 데이터 유형을 가져와야 합니다. 가장 쉽게 생각하는 방법은 typeof 연산자를 사용하는 것입니다:
instanceof를 사용하시겠습니까? 이는 객체만을 판단할 수 있으며, 다른 프레임에서 얻은 객체가 여러 개인 경우 동일한 유형의 여러 객체가 프로토타입을 공유하지 않는 문제가 있습니다.
다행히도 가장 간단하고 안정적인 또 다른 방법인 Object.prototype.toString이 있습니다. 다양한 유형의 데이터에 대해 이 메서드는 '[object Object]', '[object Array]', '[object String]'과 같은 문자열을 반환할 수 있어 판단에 매우 편리합니다. IE8 이하 브라우저에서는 이 메소드가 null, undefine, window 등에 대해 '[object Object]'를 반환한다는 점에 유의해야 합니다. 그러나 다행스럽게도 이는 빈 객체를 결정하는 데 이 메소드를 사용하는 데 영향을 미치지 않습니다.
코드는 바로 아래에 있고, 설명은 댓글에서 확인하실 수 있습니다.
var type;
if(value == null) { // value === 정의되지 않음 || value === null
return true;
}
type = Object. 프로토타입.toString.call(value).slice(8, -1);
switch(type) {
case 'String':
return !$.trim(value);
case ' Array ':
Case' Object ':
Return $ .ISEMPTYOBJECT (Value); // 판단에 사용 > ~ ;