2010-02-17 3 views
4

그래서 ..데이터 유형 및 javascript ... 무슨 악몽

나는 문자열과 숫자를 다르게 처리하는 함수에 데이터를 전달하고 있습니다.

값 배열을 전달하고 각 값의 유형이 무엇인지 감지 할 수 있습니다.

row[0] = 23; 
row[1] = "this is a string... look at it be a string!"; 
row[2] = true; 

$.each(row, function(){ 
    alert(typeof(this)); 
    //alerts object 
}); 

주어진 행의 "실제"데이터 유형을 감지 할 수 있습니까? 나는 "이"콜백과 명시 적 인수를 사용하는 것이 일반적으로 명확하고 예측이다 사용하여 피하려고 가능하면

답변

5

var row = [ 23, "this is a string", true ]; 

$.each(row, function (index,item) { 
    alert(typeof(item)); 
}); 

// Alerts "number", "string", "boolean" 

을보십시오.

+0

죽은. 덕분에 ... –

+0

당신은 오신 것을 환영합니다. 이제 jQuery의 소스 코드를보고 왜 버전이 작동하지 않는지 알아 보겠습니다. – Rich

+7

'this'는 항상 객체입니다. *항상*. 그게 전부입니다. –

3

@Rich는 최상의 해결책을 제안했습니다. 콜백에 전달 된 값을 인수로 사용했습니다. jQuery doc에서 인용구 :

값은 또한 this 키워드를 통해 액세스 할 수 있지만, 간단한 문자열이나 숫자 값이 경우에도 자바 스크립트가 항상 Objectthis 값을 바꿈됩니다.

this.valueOf() "원시 값으로 돌아갈 수 있습니다." 하지만 여전히 - 특정 예에서는 함수 인수로 전달 된 값을 사용하는 것이 좋습니다.