2016-07-08 5 views
-1

전달 된 인수가 정수인지 부동인지 여부를 확인하는 함수를 만들었습니다. 그러나 어떤 이유로 문자열을 전달할 때 true를 반환합니다. 나는 이것이 어떻게 일어나는 지 이해하지 못한다 ?? 그 누구도 날이를 알아낼 수 있습니다 경우문자열 전달시 함수가 true를 반환하는 이유는 무엇입니까?

가 나는

function isNumeric(val){ 

    var patt = new RegExp('^[0-9]+$'); 

    return (patt.test(val) || Math.floor(val) !== val); 



} 


console.log(isNumeric("Hello")); //Returns true?? 
+0

'Math.floor (val)! == val'' 결과는'NaN! == "Hello"'이것은'true'; 'patt.test (val)'('false')로부터 올바른 결과를 얻으면'return false || true;는 true이다. – Xufox

답변

0

또한, 아래의 바이올린을 참조 할 수 있습니다 정말 감사하겠습니다. 정규식 패턴은 성공적이지만 Math.floor() 평가는 문제가 있습니다. 다음이된다

patt.test("Hello") || Math.floor("Hello") !== "Hello" 

: 다음이된다

false || NaN !== "Hello" 

을 : 당신이 문자열에 전달하는 경우

https://jsfiddle.net/joedonahue/8uw0cr4y/1/

function isNumeric(val){ 
    var patt = new RegExp('^[0-9]+$'); 
    return (patt.test(val)); 
    //return Math.floor(val) !== val; 
} 
alert(isNumeric("Hello")); //Returns true?? 
관련 문제