>웹 프론트엔드 >JS 튜토리얼 >Js는 매개변수(문자열, 배열, 개체)가 정의되지 않았는지 또는 값이 비어 있는지 확인합니다._javascript 기술

Js는 매개변수(문자열, 배열, 개체)가 정의되지 않았는지 또는 값이 비어 있는지 확인합니다._javascript 기술

WBOY
WBOY원래의
2016-05-16 17:17:401655검색

때때로 다음과 같은 상황이 발생합니다. 일부 프런트엔드 컨트롤이 서버에 데이터를 제출하는 데이터 확인 프로세스 중에 제출된 데이터가 비어 있는지 확인해야 합니다. 일반적인 형태의 문자열 데이터라면 잘라낸 후에 길이만 결정하면 됩니다. 여기에 필요한 데이터는 JSON.stringify(data)를 통해 다양한 유형(숫자, 문자열, 배열, 객체 등)이 될 수 있습니다. 직렬화된 후 통과되었습니다.

여기에서는 다음 데이터 값이 "null 값"으로 정의됩니다.

•정의되지 않음
•null
•빈 문자열 및 순수 공백 문자열: '', ' ' 등.
•빈 배열: []
•빈 객체: {}

이를 제외한 데이터 값은 비어 있지 않은 것으로 간주됩니다.

그중 null과 undefine은 쉽게 식별할 수 있지만, 다른 유형의 경우 해당 메소드를 사용하여 데이터가 비어 있는지 여부를 감지하려면 먼저 데이터 유형을 가져와야 합니다. 가장 쉽게 생각하는 방법은 typeof 연산자를 사용하는 것입니다:

코드 복사 코드는 다음과 같습니다.

< ;SPAN style="BACKGROUND-COLOR: rgb(255,255,255)">if(typeof data === 'number') {
//숫자 처리
}

그러나 typeof는 '객체', '함수', '숫자', '부울', '문자열' 및 '정의되지 않음' 등 6가지 유형의 문자열만 반환합니다. 생성된 객체를 구별하기 위해 RegExp 객체를 사용할 수 없습니다. 또한 typeof는 (문자열, 숫자, 부울)과 같은 일부 기본 데이터 유형과

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(''));

이 역시 우리의 판단에 일정한 영향을 미칩니다.

instanceof를 사용하시겠습니까? 이는 객체만을 판단할 수 있으며, 다른 프레임에서 얻은 객체가 여러 개인 경우 동일한 유형의 여러 객체가 프로토타입을 공유하지 않는 문제가 있습니다.

다행히도 가장 간단하고 안정적인 또 다른 방법인 Object.prototype.toString이 있습니다. 다양한 유형의 데이터에 대해 이 메서드는 '[object Object]', '[object Array]', '[object String]'과 같은 문자열을 반환할 수 있어 판단에 매우 편리합니다. IE8 이하 브라우저에서는 이 메소드가 null, undefine, window 등에 대해 '[object Object]'를 반환한다는 점에 유의해야 합니다. 그러나 다행스럽게도 이는 빈 객체를 결정하는 데 이 메소드를 사용하는 데 영향을 미치지 않습니다.

코드는 바로 아래에 있고, 설명은 댓글에서 확인하실 수 있습니다.

코드 복사 코드는 다음과 같습니다.

var isEmptyValue = function(value) {

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 ': Return! Value.length;
Case' Object ':
Return $ .ISEMPTYOBJECT (Value); // 판단에 사용 >                                     ~                   ;

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