2014-02-28 3 views
0

JavaScript에서는 변수가 느슨하게 입력되므로 숫자 5과 문자열 "5"은 여러 연산자로 숫자로 처리 될 수 있습니다. 그러나, tunrime에서 JavaScript 변환 어빌리 티를 찾아내는 일반적인 방법이 있습니까? 아니면 느슨한 입력을 가능하게하는 여러 유형의 연산자를 오버로드하는 것입니까? ainstanceof처럼 하드 타이핑 사업자 반대로, feasable 방식으로 type_candidate로 변환 할 수 있습니다 경우 유형 이름 type_canditate을 포함하는 변수 a 및 문자열 주어진 예를 들어JavaScript에서 가능한 변환을 확인할 수 있습니까?

, 자바 스크립트를 요청할 수있는 방법이 있나요? 예를 들어, "5" instanceof Number은 거짓을 평가하지만 Math.sin("5")은 완벽하게 실현됩니다. 숫자의 경우, parseFloat(some_number)NaN으로 평가되는지 여부는 obviuosly 확인할 수 있지만 이는 숫자의 특별한 경우입니다.

따라서 유형을 명명하는 일반적인 방법이 있습니까? 유용한 변수에서 특정 변수가 변환 될 수 있는지 확인하십시오.

+0

그 목적으로 명시 적으로 시설이 없지만 다른 유형의 유형으로 변환하여 언제든지 시도 할 수 있습니다. – Pointy

+0

또한,'parseFloat()'는 변환 가능성을 검사하는 좋은 방법이 아닙니다. 'Number()'생성자는 더 안전합니다. – Pointy

+0

'parseFloat'에 비해'Number'의 장점은 무엇입니까? – dronus

답변

1

JavaScript에는 원시, 데이터 및 부울의 세 가지 기본 데이터 형식이 있습니다.

아무것도가 문자열 또는 부울로 변환 할 수 있습니다

  • 모든 객체가 true로 변환 -
  • 모든 객체이 (false된다 null 제외 typeof nullobject가 제공하기 때문에 나는 단지 여기 언급) 내장 된 toString 문자열로 변환 할 때 호출되는 메서드. 숫자를 문자열로 변환
  • 숫자의 문자열 표현을 제공하여 수행됩니다
  • 숫자가 false된다 0 않는 한, true을 부울로 변환 (예. 5"5"된다).

숫자로 변환하는 것은 조금 까다 롭지만 기술적으로 가능합니다. 유효한 번호를 찾을 수 있으면 그 번호가됩니다. 그렇지 않으면 NaN이됩니다.

기본적으로 ... 모든 유형은 기타 유형이 될 수 있습니다. "오류 상태"와 유사한 것이 있다면 NaN입니다.

+0

객체는'valueOf()'함수를 통해 숫자로 변환됩니다.이 함수는 기본적으로'toString()'과 유사합니다. – Pointy

+0

숫자 확인과 관련하여 다른 질문이 있습니다. http://stackoverflow.com/questions/22100243/how-to-check-if-a-string-contains-a-number-in-javascript – dronus