2016-07-08 13 views
-1

Ich habe eine Funktion erstellt, die überprüft, ob das übergebene Argument eine Ganzzahl oder ein Gleitkomma ist. Aber aus irgendeinem Grund kehrt es immer wieder wahr zurück, wenn ich eine Saite überspiele. Ich verstehe nicht, wie das passiert ??Warum gibt meine Funktion wahr zurück, wenn eine Zeichenfolge übergeben wird?

Wenn jemand kann mir dabei helfen, herauszufinden, würde ich wirklich zu schätzen es

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' ergibt' NaN! == "Hello" 'was' 'true' ist; Mit dem korrekten Ergebnis von 'patt.test (val)' ('false') erhalten Sie' return false || wahr; 'was 'wahr' ist. – Xufox

Antwort

0

Zusätzlich können Sie die Geige unten verweisen. Das Regex-Muster ist erfolgreich, aber die Math.floor() -Auswertung ist problematisch.

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?? 
0

Wenn Sie in einem String übergeben, müssen Sie den folgenden Ausdruck:

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

, die dann zu:

false || NaN !== "Hello" 

, die dann zu:

false || true 

Da || einen truthigen Wert zurückgibt, wenn eines der Argumente truthy ist, gibt das true zurück.

Weitere Informationen zur ordnungsgemäßen Durchführung der Überprüfung finden Sie unter Is there a (built-in) way in JavaScript to check if a string is a valid number?.

Verwandte Themen