Js 는 인자 (String, Array, Object) 가 undefined 인지 값 이 비어 있 는 지 판단 합 니 다.

2875 단어
때때로 우 리 는 이러한 상황 을 만 날 수 있다. 일부 전단 컨트롤 이 서버 에 데 이 터 를 제출 하려 는 데이터 검증 과정 에서 제출 한 데이터 가 비어 있 는 지 판단 해 야 한다.일반 폼 의 문자열 데이터 라면 trim 후에 length 를 판단 하면 됩 니 다. 여기에 필요 한 데 이 터 는 다양한 유형 (숫자, 문자열, 배열, 대상 등) 으로 JSON. stringify (data) 를 통 해 직렬 화 된 후에 전달 할 수 있 습 니 다.
여기 서 다음 과 같은 데이터 값 을 '빈 값' 으로 정의 합 니 다.
• 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; //
            }
        };

좋은 웹페이지 즐겨찾기