JS 는 각종 데이터 형식 을 판단 하 는 방법 & 하나의 변수 가 배열 형식 인지 판단 합 니 다.

4713 단어 JS 프로 그래 밍
1. js 에서 데이터 형식 을 판단 하 는 방법
js 의 7 가지 데이터 형식: number, string, boolean, undefined, object, null, symbol 과 함수 형식 function.
방법 1: type: of, 배열, 대상 또는 null 을 검사 할 수 없습니다.
typeof   2                  //  number
typeof   null               //   object
typeof   {}                 //   object
typeof   []                 //   object
typeof   (function(){})     //  function
typeof   undefined          //  undefined
typeof   '222'              //   string
typeof   true               // boolean

방법 2: instanceof ,배열 과 대상 만 판단 할 수 있 고 string 과 boolean 유형 을 판단 할 수 없 으 며 배열 도 대상 에 속한다.
 var o = {'name':'lee'};
 var a = ['reg','blue'];

 console.log(o instanceof Object);// true
 console.log(a instanceof Array);//  true
 console.log(o instanceof Array);//  false

배열 도 대상 에 속 하기 때문에 배열 인지 대상 인지 구분 할 수 없습니다. 개선: 하나의 방법 으로 배열 과 대상 을 판단 합 니 다.
var o = {'name':'lee'};
var a = ['reg','blue'];

var getDataType = function(o){
            if(o instanceof Array){
                return 'Array'
            }else if( o instanceof Object ){
                return 'Object';
            }else{
                return 'param is no object type';
            }
       };

console.log(getDataType(o));//Object。
console.log(getDataType(a));//Array。

방법 3: constructor 방법
var o = {'name':'lee'};
var a = ['reg','blue'];
console.log(o.constructor == Object);//true
console.log(a.constructor == Array);//true

방법 4: toString () 은 string 과 boolean 유형 을 판단 합 니 다.
var o = {'name':'lee'};
var a = ['reg','blue'];

function c(name,age){
         this.name = name;
         this.age = age;
 }
var c = new c('kingw','27');
console.log(Object.prototype.toString.call(a));//[object Array]
console.log(Object.prototype.toString.call(o));//[Object Object]
console.log(Object.prototype.toString.call(c));//[Object Object]

2. 특수 치 의 상 은 엄격 한 비교 와 같다.

(function(){
    console.log(null==undefined) //   :true
    console.log(null===undefined) //   :false
    console.log(null===null) //   :true
    console.log(undefined===undefined) //   :true
    console.log(NaN==undefined) //   :false
    console.log(NaN==null)  //   :false
    console.log(NaN==NaN)  //   :false
    console.log(NaN===NaN)  //   :false
})()

3. 문자열 이 같 음 (= =), 엄 격 히 같 음 (= = =) 연산 자
같은 (= =) 연산 을 비교 할 때 한 쪽 이 문자 이 고 한 쪽 이 숫자 라면 문자열 을 숫자 로 변환 한 다음 비교 합 니 다.
엄격하게 동일 (= = =) 하면 유형 전환 을 하지 않 고 유형 이 동일 한 지 비교 합 니 다.주 남 은 모든 값 과 비교 할 때 false 입 니 다.
4. 문자열 크기 의 비교, (>) 보다 크 고 작 음 (
javascript 문자열 은 (작 음) 보다 크 고 (작 음) 비교 할 때 첫 번 째 문자 의 ascii 값 코드 에 따라 비교 합 니 다. 숫자 (number) 와 문자열 (string) 을 비교 할 때 숫자 (number) 를 문자열 (string) 로 강제로 변환 한 다음 비교 합 니 다.
5. JS 는 하나의 변수 가 배열 형식 인지 판단 합 니 다.
참고 블 로그:https://blog.csdn.net/lee_magnum/article/details/11555981
1. instanceof 연산 자
instanceof 연산 자 는 constructor. prototype 이 매개 변수 object 의 원형 체인 에 존재 하 는 지 확인 하 는 데 사 용 됩 니 다.
obj instanceof Object;     //true 인 스 턴 스 obj 는 Object 구조 함수 에 있 지 않 습 니 다.
var arr = [1,2,3,1];   
alert(arr instanceof Array); // true

2. 대상 의 constructor 속성
var arr = [1,2,3,1];   
alert(arr.constructor === Array); // true

 두 번 째 방법 과 세 번 째 방법 은 흠 잡 을 데 가 없 는 것 같 지만 사실은 구멍 이 있 습 니 다. 여러 프레임 을 오 갈 때 이 두 가지 방법 은 알렉산더 입 니 다. iframe 마다 자신의 실행 환경 이 있 기 때문에 frame 을 뛰 어 넘 는 실례 화 된 대상 은 서로 원형 체인 을 공유 하지 않 기 때문에 상기 검 측 코드 가 효력 을 잃 습 니 다! 
3、Object.prototype.toString  (null 과 array 형식 을 구분 하 는 데 사용)
function isArrayFn (o) {  
 return Object.prototype.toString.call(o) === '[object Array]';   
}
var arr = [1,2,3,1];   
 
alert(isArrayFn(arr));// true 

 call 은 toString 의 this 인용 을 검 측 대상 으로 바 꾸 고 이 대상 의 문자열 을 되 돌려 표시 한 다음 이 문자열 이 '[object Array]' 인지 비교 하여 Array 의 인 스 턴 스 인지 여 부 를 판단 합 니 다.
4.Array.isArray()   
ECMAScript 5 는 Array. isArray () 를 자 바스 크 립 트 에 정식으로 도입 합 니 다. 하나의 값 이 배열 인지 정확하게 확인 하 는 것 이 목적 입 니 다. IE9 +, Firefox 4 +, Safari 5 +, Opera 10.5 +, Chrome 은 모두 이 방법 을 실 현 했 습 니 다. 그러나 IE8 이전 버 전 은 지원 되 지 않 습 니 다. 
var arr = [1,2,3,1];  
var arr2 = [{ abac : 1, abc : 2 }];  
 
function isArrayFn(value){
	if (typeof Array.isArray === "function") {
		return Array.isArray(value);    
	}else{
		return Object.prototype.toString.call(value) === "[object Array]";    
	}
}
alert(isArrayFn(arr));// true 
alert(isArrayFn(arr2));// true 

 

좋은 웹페이지 즐겨찾기