>  기사  >  웹 프론트엔드  >  JavaScript 변수가 배열인지 객체인지 확인하는 방법 자세한 코드 설명은 무엇입니까?

JavaScript 변수가 배열인지 객체인지 확인하는 방법 자세한 코드 설명은 무엇입니까?

伊谢尔伦
伊谢尔伦원래의
2017-07-26 11:45:001213검색

JavaScript 변수가 배열인지 객체인지 어떻게 확인하나요?

답변:
1. 단지 typeof를 사용하여 변수가 배열인지 객체인지 확인하면 'objec'이 반환됩니다.
이 질문에 대한 가능한 대답은 변수가 객체인지 확인하고 변수에 숫자 길이가 있는지 확인하는 것입니다(빈 배열인 경우 길이가 0일 수도 있음).
그러나 매개변수 개체[인수 개체](지정된 함수에 전달된 모든 매개변수)도 위 메서드에 적용될 수 있습니다. 기술적으로 말하면 매개변수 개체는 배열이 아닙니다.
또한 객체에 .length 속성이 있는 경우 이 방법이 작동하지 않습니다.

// Real array 正在的数组 
var my_array = []; 
// Imposter! 冒名顶替的! 
var my_object = {}; 
my_object.length = 0; 
// Potentially faulty 潜在的错误 
function is_this_an_array(param) { 
if (typeof param === 'object' && !isNaN(param.length)) { 
console.log('Congrats, you have an array!'); 
} 
else { 
console.log('Bummer, not an array'); 
} 
} 
// Works 成功 
is_this_an_array(my_array); 
// Works, but is incorrect 成功了,但是不正确 
is_this_an_array(my_object);


2. 이 질문에 대한 또 다른 대답은 더 미묘한 방법을 사용하여 toString() 메서드를 호출하여 변수를 해당 유형을 나타내는 문자열로 변환하는 것입니다.
이 방법은 실제 배열에 사용할 수 있습니다. 매개변수 객체가 문자열로 변환되고 [객체 인수]가 반환되면 변환이 실패합니다. 또한
숫자 길이 속성을 포함하는 객체 클래스에 대해서도 변환이 실패합니다.

// Real array 真正的数组 
var my_array = []; 
// Imposter! 冒名顶替的! 
var my_object = {}; 
my_object.length = 0; 
// Rock solid 坚如磐石(检验函数) 
function is_this_an_array(param) { 
if (Object.prototype.toString.call(param) === '[object Array]') { 
console.log('Congrats, you have an array!'); 
} 
else { 
console.log('Bummer, not an array'); 
} 
} 
// Works 成功了 
is_this_an_array(my_array); 
// Not an array, yay! 不是数组(array)! 
is_this_an_array(my_object);


3. 또한, instanceof는 신뢰할 수 없는 다중 프레임 DOM 환경에 완벽하게 적합한 작업입니다.

var my_array = []; 
if (my_array instanceof Array) { 
console.log('Congrats, you have an array!'); 
}


4 Javascript 1.8.5(ECMAScript 5)의 경우 변수 이름 .isArray()를 사용하면 이 목적을 달성할 수 있습니다

var my_array = []; 
if (Array.isArray(my_array)) { 
console.log('Congrats, you have an array!'); 
}


위 내용은 JavaScript 변수가 배열인지 객체인지 확인하는 방법 자세한 코드 설명은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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