Ich habe es nur in der JavaScript-Konsole von Firefox versucht, aber keine der folgenden Anweisungen gibt true zurück:
parseFloat('geoff') == NaN;
parseFloat('geoff') == Number.NaN;
Ich habe es nur in der JavaScript-Konsole von Firefox versucht, aber keine der folgenden Anweisungen gibt true zurück:
parseFloat('geoff') == NaN;
parseFloat('geoff') == Number.NaN;
Ich habe diese kleine Funktion erstellt, die wie ein Zauber funktioniert. Anstatt auf NaN zu prüfen, was kontraintuitiv zu sein scheint, prüfen Sie auf eine Zahl. Ich bin ziemlich sicher, ich bin nicht der erste, der es auf diese Weise zu tun, aber ich dachte, ich würde teilen.
function isNum(val){
var absVal = Math.abs(val);
var retval = false;
if((absVal-absVal) == 0){
retval = true
}
return retval;
}
Die Antwort von marksyzm funktioniert gut, aber sie liefert nicht false für Infinity
da die Unendlichkeit technisch gesehen keine Zahl ist.
Ich habe mir eine isNumber
Funktion, die prüft, ob es eine Zahl ist.
function isNumber(i) {
return !isNaN(i && i !== true ? Number(i) : parseFloat(i)) && [Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY].indexOf(i) === -1;
}
console.log(isNumber(Infinity));
console.log(isNumber("asdf"));
console.log(isNumber(1.4));
console.log(isNumber(NaN));
console.log(isNumber(Number.MAX_VALUE));
console.log(isNumber("1.68"));
UPDATE: Mir ist aufgefallen, dass dieser Code bei einigen Parametern nicht funktioniert, also habe ich ihn verbessert.
function isNumber(i) {//function for checking if parameter is number
if(!arguments.length) {
throw new SyntaxError("not enough arguments.");
} else if(arguments.length > 1) {
throw new SyntaxError("too many arguments.");
} else if([Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY].indexOf(i) !== -1) {
throw new RangeError("number cannot be \xB1infinity.");
} else if(typeof i === "object" && !(i instanceof RegExp) && !(i instanceof Number) && !(i === null)) {
throw new TypeError("parameter cannot be object/array.");
} else if(i instanceof RegExp) {
throw new TypeError("parameter cannot be RegExp.");
} else if(i == null || i === undefined) {
throw new ReferenceError("parameter is null or undefined.");
} else {
return !isNaN(i && i !== true ? Number(i) : parseFloat(i)) && (i === i);
}
}
console.log(isNumber(Infinity));
console.log(isNumber(this));
console.log(isNumber(/./ig));
console.log(isNumber(null));
alert("1234567890.".indexOf(String.fromCharCode(mycharacter))>-1);
Das ist nicht elegant. Aber nachdem ich isNAN() ausprobiert hatte, kam ich zu dieser Lösung, die eine weitere Alternative ist. In diesem Beispiel habe ich auch '.' zugelassen, weil ich für float maskiere. Sie könnten dies auch umkehren, um sicherzustellen, dass keine Zahlen verwendet werden.
("1234567890".indexOf(String.fromCharCode(mycharacter))==-1)
Dies ist eine Auswertung für ein einzelnes Zeichen, aber Sie könnten auch eine Schleife durch eine Zeichenkette ziehen, um nach Zahlen zu suchen.
Number('hello').toString() === 'NaN' // true
Number(undefined).toString() === 'NaN' // true
Number('12345').toString() === 'NaN' // false
// These all evaluate to 0 which is a number
Number('').toString() === 'NaN' // false // 0
Number('0').toString() === 'NaN' // false // 0
Number().toString() === 'NaN' // false // 0
// These all evaluate to 0 and 1 which is a number
Number(false).toString() === 'NaN' // false // 0
Number(true).toString() === 'NaN' // false // 1
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.