Ich werde gehen müssen, um voran und Gegenantworten hier gepostet: Sie können auch Ihre eigene Funktion einfach überprüfen für den Wert „NaN“ wie so schreiben verwenden Sie nicht die globale isNaN()
Funktion in JavaScript. Es ist sehr schlecht benannt, weil die Art, wie es funktioniert, nicht mit seiner Signatur übereinstimmt. Es überprüft tatsächlich, ob das Argument, das Sie in übergeben haben, in NaN
konvertiert wird, wenn es als Teil des mathematischen Ausdrucks verwendet wird. Oder noch einfacher ausgedrückt: Wenn Sie versuchen, das Argument in eine Zahl zu konvertieren, kann es konvertiert werden. Hier sind einige Beispiele zur Illustration:
console.log("A number: ", isNaN(42))// it is not "not a number"
console.log("A mathematical concept: ", isNaN(Infinity)) // not a "not a number" still
console.log("NaN: ", isNaN(NaN))// naturally, NaN is not a number
console.log("A garbage operation: ", isNaN(42 * "watermelon"))// its meaningless mathematically, so it produces NaN as a result
console.log("A letter: ", isNaN("a"))// clearly not an NaN value, but if converted to a number, it would be
console.log("An object: ", isNaN({}))// same as above
//entering some more bizarre territory
console.log("An empty string: ", isNaN("")) //really? Yes - it will be converted to a zero, hence it is actually a number
console.log("An empty array: ", isNaN([])) //an empty array converts to an empty string first, then to a zero
console.log("An array with values: ", isNaN(["a", "b", "c"])) //nope, can't convert to a number
console.log("Another array with values: ", isNaN([1, 2, 3])) //neither can this
console.log("An array with a single value: ", isNaN([1])) //of course this can...because it's a SINGLE numeric value in the array
Und so weiter und so fort. Das Verhalten ist nicht unvorhersehbar, aber es ist definitiv nicht das, was Sie vermuten würden, nämlich dass Sie bemerkt hätten, dass isNaN
einen sehr schlechten Job macht, Ihnen zu sagen, ob das Argument tatsächlichNaN
ist.
Verwenden Sie stattdessen die Number.isNaN()
function, die Sie korrekte Ergebnisse
console.log("A number: ", Number.isNaN(42))
console.log("A mathematical concept: ", Number.isNaN(Infinity))
console.log("A letter: ", Number.isNaN("a"))
console.log("An object: ", Number.isNaN({}))
console.log("An empty string: ", Number.isNaN(""))
console.log("An empty array: ", Number.isNaN([]))
console.log("An array with values: ", Number.isNaN([1, 2, 3]))
console.log("NaN: ", Number.isNaN(NaN))
Nichts gibt gleich 'NaN'. Sogar 'NaN === NaN; // false' –
Nun, Sie müssten ['isNaN'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN) verwenden, und Sie können nicht zuweisen zu "diesem". 'this = anything' ist ungültig. –
Sie müssen sich alle Variablen anschauen, es gibt kein "alles" – epascarello