487

FirefoxのJavaScriptコンソールで試しただけですが、次のいずれのステートメントもtrueを返しません。

parseFloat('geoff') == NaN;

parseFloat('geoff') == Number.NaN;
4

32 に答える 32

666

このコードを試してください:

isNaN(parseFloat("geoff"))

数値だけでなくNaNであるかどうかを確認するには、次を参照してください:JavascriptNaNをテストするにはどうすればよいですか?

于 2010-04-16T10:58:04.793 に答える
167

非常に単純な本EffectiveJavaScriptで、この手法に出くわしました。

NaNはそれ自体と等しくないものとして扱われる唯一のJavaScript値であるため、値がそれ自体と等しいかどうかをチェックすることで、値がNaNであるかどうかをいつでもテストできます。

var a = NaN;
a !== a; // true 

var b = "foo";
b !== b; // false 

var c = undefined; 
c !== c; // false

var d = {};
d !== d; // false

var e = { valueOf: "foo" }; 
e !== e; // false

@allsyedがコメントするまでこれに気づいていませんでしたが、これはECMA仕様に含まれています:https ://tc39.github.io/ecma262/#sec-isnan-number

于 2013-06-07T16:05:06.610 に答える
59

このコードを使用します:

isNaN('geoff');

isNaN()MDNのドキュメントを参照してください。

alert ( isNaN('abcd'));  // alerts true
alert ( isNaN('2.0'));  // alerts false
alert ( isNaN(2.0));  // alerts false
于 2010-04-16T10:59:31.330 に答える
49

タイプNumberの値がテストされるかどうかに関係NaNなく、グローバル関数isNaNが機能します。

isNaN(any-Number);

JSのすべてのタイプで機能する一般的なアプローチの場合、次のいずれかを使用できます。

ECMAScript-5ユーザーの場合:

#1
if(x !== x) {
    console.info('x is NaN.');
}
else {
    console.info('x is NOT a NaN.');
}

ECMAScript-6を使用している人の場合:

#2
Number.isNaN(x);

また、ECMAScript 5と6の両方で一貫性を保つために、このポリフィルをNumber.isNanに使用することもできます。

#3
//Polyfill from MDN
Number.isNaN = Number.isNaN || function(value) {
    return typeof value === "number" && isNaN(value);
}
// Or
Number.isNaN = Number.isNaN || function(value) {     
    return value !== value;
}

詳細については、この回答を確認してください。

于 2015-08-21T10:11:38.663 に答える
18

ES6の時点で、Object.is(..)は2つの値が絶対的に等しいかどうかをテストするために使用できる新しいユーティリティです。

var a = 3 / 'bar';
Object.is(a, NaN); // true
于 2015-12-28T03:26:53.493 に答える
17

次の理由から、グローバルisNaN(value)関数呼び出しを使用する必要があります。

  • クロスブラウザでサポートされています
  • ドキュメントについてはisNaNを参照してください

例:

 isNaN('geoff'); // true
 isNaN('3'); // false

これがお役に立てば幸いです。

于 2010-04-16T10:57:34.920 に答える
17

NaNは、そのようにテストできない特別な値です。私が共有したかった興味深いことはこれです

var nanValue = NaN;
if(nanValue !== nanValue) // Returns true!
    alert('nanValue is NaN');

これはNaN値に対してのみtrueを返し、安全なテスト方法です。同じ変数が互いに等しくないかどうかをテストすることは明らかにあまり意味がないので、関数でラップするか、少なくともコメントする必要があります。

于 2013-01-08T17:27:11.990 に答える
11

JavaScriptのNaNは「NotANumber」の略ですが、そのタイプは実際には数値です。

typeof(NaN) // "number"

変数の値がNaNであるかどうかを確認するには、関数isNaN()を単純に使用することはできません。isNaN()には次の問題があるためです。以下を参照してください。

var myVar = "A";
isNaN(myVar) // true, although "A" is not really of value NaN

ここで実際に起こることは、myVarが暗黙的に数値に強制変換されることです。

var myVar = "A";
isNaN(Number(myVar)) // true. Number(myVar) is NaN here in fact

「A」は実際には数字ではないため、実際には意味があります。しかし、私たちが本当にチェックしたいのは、myVarが正確にNaNの値であるかどうかです。

したがって、isNaN()は役に立ちません。では、代わりに何をすべきでしょうか?

NaNはそれ自体と等しくないように扱われる唯一のJavaScript値であるため、!==を使用してそれ自体と等しいかどうかを確認できます。

var myVar; // undefined
myVar !== myVar // false

var myVar = "A";
myVar !== myVar // false

var myVar = NaN
myVar !== myVar // true

したがって、結論として、変数!==自体が真である場合、この変数は正確に値NaNになります。

function isOfValueNaN(v) {
    return v !== v;
}

var myVar = "A";
isNaN(myVar); // true
isOfValueNaN(myVar); // false
于 2017-09-09T08:40:40.913 に答える
10

'1.2geoff'解析される問題を修正するには、Number()代わりにパーサーを使用してください。

だからこれではなく:

parseFloat('1.2geoff'); // => 1.2
isNaN(parseFloat('1.2geoff')); // => false
isNaN(parseFloat('.2geoff')); // => false
isNaN(parseFloat('geoff')); // => true

これを行う:

Number('1.2geoff'); // => NaN
isNaN(Number('1.2geoff')); // => true
isNaN(Number('.2geoff')); // => true
isNaN(Number('geoff')); // => true

編集:私はこれから別の問題に気づきました...偽の値(そして実際のブール値として真)はNumber()として戻り値に渡されました0!その場合...代わりにparseFloatが毎回機能します。だからそれにフォールバック:

function definitelyNaN (val) {
    return isNaN(val && val !== true ? Number(val) : parseFloat(val));
}

そして、それは一見すべてをカバーしています。私はそれをlodashよりも90%遅い速度でベンチマークしまし_.isNaNたが、それではすべてのNaNをカバーしているわけではありません。

http://jsperf.com/own-isnan-vs-underscore-lodash-isnan

明確にするために、私のものは「数字ではない」ものの人間の文字通りの解釈を処理し、lodash'sは何かが「NaN」であるかどうかをチェックするコンピュータの文字通りの解釈を処理します。

于 2014-03-17T10:57:10.237 に答える
8

@chiborgの答えは正しいですが、注意すべき点が他にもあります。

parseFloat('1.2geoff'); // => 1.2
isNaN(parseFloat('1.2geoff')); // => false
isNaN(parseFloat('.2geoff')); // => false
isNaN(parseFloat('geoff')); // => true

つまり、入力の検証にこのメソッドを使用している場合、結果はかなり自由になります。

したがって、はい、使用できますparseFloat(string)(または、完全な数字の場合はparseInt(string, radix)'を使用し、その後それをでラップしisNaN()ますが、数字が数字以外の追加の文字と絡み合っているという落とし穴に注意してください。

于 2013-08-24T23:08:25.747 に答える
6

簡単な解決策!

本当に超シンプル!ここ!この方法があります!

function isReallyNaN(a) { return a !== a; };

次のように簡単に使用できます。

if (!isReallyNaN(value)) { return doingStuff; }

hereこの関数を使用したパフォーマンステストとselected answer

また、いくつかの代替実装については、以下の最初の例を参照してください。


例:

function isReallyNaN(a) { return a !== a; };

var example = {
    'NaN': NaN,
    'an empty Objet': {},
    'a parse to NaN': parseFloat('$5.32'),
    'a non-empty Objet': { a: 1, b: 2 },
    'an empty Array': [],
    'a semi-passed parse': parseInt('5a5'),
    'a non-empty Array': [ 'a', 'b', 'c' ],
    'Math to NaN': Math.log(-1),
    'an undefined object': undefined
  }

for (x in example) {
    var answer = isReallyNaN(example[x]),
        strAnswer = answer.toString();
    $("table").append($("<tr />", { "class": strAnswer }).append($("<th />", {
        html: x
    }), $("<td />", {
        html: strAnswer
    })))
};
table { border-collapse: collapse; }
th, td { border: 1px solid; padding: 2px 5px; }
.true { color: red; }
.false { color: green; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<table></table>

別の名前のメソッドを使用したくない場合、およびそれをよりグローバルに利用できるようにしたい場合は、実装のためにいくつかの代替パスを使用します。警告これらの解決策にはネイティブオブジェクトの変更が含まれるため、最善の解決策ではない場合があります。常に注意を払い、使用する可能性のある他のライブラリがネイティブコードまたは同様の変更に依存する可能性があることに注意してください。

代替実装1:ネイティブisNaNメソッドを置き換えます。

//  Extremely simple. Just simply write the method.
window.isNaN = function(a) { return a !==a; }

代替実装2:数値オブジェクトに追加
* ECMA 5〜6のポリフィルでもあるため推奨

Number['isNaN'] || (Number.isNaN = function(a) { return a !== a });
//  Use as simple as
Number.isNaN(NaN)

空の場合の代替ソリューションテスト

オブジェクトが空かどうかをテストする簡単なウィンドウメソッドを作成しました。アイテムが「正確に」NaNであるかどうかがわからないという点で少し異なりますが、空のアイテムを探すときにも役立つ可能性があるため、これをスローすることにしました。

/** isEmpty(varried)
 *  Simple method for testing if item is "empty"
 **/
;(function() {
   function isEmpty(a) { return (!a || 0 >= a) || ("object" == typeof a && /\{\}|\[(null(,)*)*\]/.test(JSON.stringify(a))); };
   window.hasOwnProperty("empty")||(window.empty=isEmpty);
})();

例:

;(function() {
   function isEmpty(a) { return !a || void 0 === a || a !== a || 0 >= a || "object" == typeof a && /\{\}|\[(null(,)*)*\]/.test(JSON.stringify(a)); };
   window.hasOwnProperty("empty")||(window.empty=isEmpty);
})();

var example = {
    'NaN': NaN,
    'an empty Objet': {},
    'a parse to NaN': parseFloat('$5.32'),
    'a non-empty Objet': { a: 1, b: 2 },
    'an empty Array': new Array(),
    'an empty Array w/ 9 len': new Array(9),
    'a semi-passed parse': parseInt('5a5'),
    'a non-empty Array': [ 'a', 'b', 'c' ],
    'Math to NaN': Math.log(-1),
    'an undefined object': undefined
  }

for (x in example) {
	var answer = empty(example[x]),
		strAnswer = answer.toString();
	$("#t1").append(
		$("<tr />", { "class": strAnswer }).append(
			$("<th />", { html: x }),
			$("<td />", { html: strAnswer.toUpperCase() })
		)
	)
};


function isReallyNaN(a) { return a !== a; };
for(x in example){var answer=isReallyNaN(example[x]),strAnswer=answer.toString();$("#t2").append($("<tr />",{"class":strAnswer}).append($("<th />",{html:x}),$("<td />",{html:strAnswer.toUpperCase()})))};
table { border-collapse: collapse; float: left; }
th, td { border: 1px solid; padding: 2px 5px; }
.true { color: red; }
.false { color: green; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<table id="t1"><thead><tr><th colspan="2">isEmpty()</th></tr></thead><thead><tr><th>Value Type</th><th>Bool Return</th></tr></thead></table>
<table id="t2"><thead><tr><th colspan="2">isReallyNaN()</th></tr></thead><thead><tr><th>Value Type</th><th>Bool Return</th></tr></thead></table>


空かどうかを非常に深くチェックする

この最後の1つは、オブジェクトが空白のオブジェクトでいっぱいであるかどうかをチェックする場合でも、少し深くなります。改善の余地があり、落とし穴があると思いますが、これまでのところ、ほとんどすべてを捉えているようです。

function isEmpty(a) {
	if (!a || 0 >= a) return !0;
	if ("object" == typeof a) {
		var b = JSON.stringify(a).replace(/"[^"]*":(0|"0*"|false|null|\{\}|\[(null(,)?)*\]),?/g, '').replace(/"[^"]*":\{\},?/g, '');
		if ( /^$|\{\}|\[\]/.test(b) ) return !0;
		else if (a instanceof Array)  {
			b = b.replace(/(0|"0*"|false|null|\{\}|\[(null(,)?)*\]),?/g, '');
			if ( /^$|\{\}|\[\]/.test(b) ) return !0;
		}
	}
	return false;
}
window.hasOwnProperty("empty")||(window.empty=isEmpty);

var example = {
    'NaN': NaN,
    'an empty Objet': {},
    'a parse to NaN': parseFloat('$5.32'),
    'a non-empty Objet': { a: 1, b: 2 },
    'an empty Array': new Array(),
    'an empty Array w/ 9 len': new Array(9),
    'a semi-passed parse': parseInt('5a5'),
    'a non-empty Array': [ 'a', 'b', 'c' ],
    'Math to NaN': Math.log(-1),
    'an undefined object': undefined,
    'Object Full of Empty Items': { 1: '', 2: [], 3: {}, 4: false, 5:new Array(3), 6: NaN, 7: null, 8: void 0, 9: 0, 10: '0', 11: { 6: NaN, 7: null, 8: void 0 } },
    'Array Full of Empty Items': ["",[],{},false,[null,null,null],null,null,null,0,"0",{"6":null,"7":null}]
  }

for (x in example) {
	var answer = empty(example[x]),
		strAnswer = answer.toString();
	$("#t1").append(
		$("<tr />", { "class": strAnswer }).append(
			$("<th />", { html: x }),
			$("<td />", { html: strAnswer.toUpperCase() })
		)
	)
};


function isReallyNaN(a) { return a !== a; };
for(x in example){var answer=isReallyNaN(example[x]),strAnswer=answer.toString();$("#t2").append($("<tr />",{"class":strAnswer}).append($("<th />",{html:x}),$("<td />",{html:strAnswer.toUpperCase()})))};
table { border-collapse: collapse; float: left; }
th, td { border: 1px solid; padding: 2px 5px; }
.true { color: red; }
.false { color: green; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<table id="t1"><thead><tr><th colspan="2">isEmpty()</th></tr></thead><thead><tr><th>Value Type</th><th>Bool Return</th></tr></thead></table>
<table id="t2"><thead><tr><th colspan="2">isReallyNaN()</th></tr></thead><thead><tr><th>Value Type</th><th>Bool Return</th></tr></thead></table>

于 2015-01-21T12:53:26.443 に答える
6

ご使用の環境がECMAScript2015をサポートしNumber.isNaNている場合は、値が実際にであることを確認するために使用することをお勧めしますNaN

の問題isNaNは、数値以外のデータでそれを使用する場合、(MDNによる)紛らわしいルールがほとんど適用されないことです。例えば、

isNaN(NaN);       // true
isNaN(undefined); // true
isNaN({});        // true

したがって、ECMA Script 2015でサポートされている環境では、

Number.isNaN(parseFloat('geoff'))
于 2015-08-14T15:32:09.603 に答える
6

ルールは次のとおりです。

NaN != NaN

isNaN()関数の問題は、場合によっては予期しない結果が返される可能性があることです。

isNaN('Hello')      //true
isNaN('2005/12/12') //true
isNaN(undefined)    //true
isNaN('NaN')        //true
isNaN(NaN)          //true
isNaN(0 / 0)        //true

値が本当にNaNであるかどうかを確認するためのより良い方法は、次のとおりです。

function is_nan(value) {
    return value != value
}

is_nan(parseFloat("geoff"))
于 2019-02-16T06:26:52.630 に答える
5

JavaScriptでは次の理由からアンダースコアのisNaN関数を使用します。

isNaN(undefined) 
-> true

少なくとも、その落とし穴に注意してください。

于 2012-10-18T19:38:46.913 に答える
5

別の選択肢を共有したいだけです。ここでは必ずしも他の選択肢よりも優れているとは限りませんが、一見の価値があると思います。

function customIsNaN(x) { return (typeof x == 'number' && x != 0 && !x); }

この背後にある論理は、0とを除くすべての数値NaNがにキャストされるということtrueです。

私は簡単なテストを行いましたが、それはNumber.isNaNそれ自体がfalseであるかどうかをチェックするのと同じくらいうまく機能します。3つすべてがより良いパフォーマンスを発揮しますisNan

結果

customIsNaN(NaN);            // true
customIsNaN(0/0);            // true
customIsNaN(+new Date('?')); // true

customIsNaN(0);          // false
customIsNaN(false);      // false
customIsNaN(null);       // false
customIsNaN(undefined);  // false
customIsNaN({});         // false
customIsNaN('');         // false

壊れたisNaN関数を避けたい場合に役立つかもしれません。

于 2014-03-20T14:13:11.077 に答える
5

function isNotANumber(n) {
  if (typeof n !== 'number') {
    return true;
  } 
  return n !== n;
}

于 2017-08-30T05:26:05.130 に答える
4

多分これも:

function isNaNCustom(value){
    return value.toString() === 'NaN' && 
           typeof value !== 'string' && 
           typeof value === 'number'
}
于 2018-02-01T13:30:50.560 に答える
4

isNaN()関数は、値がNaNであるかどうかを判別します。isNaN関数内の強制は驚くべきものになる可能性があるため、代わりにNumber.isNaN()を使用することもできます。

isNaN(123) //false
isNaN(-1.23) //false
isNaN(5-2) //false
isNaN(0) //false
isNaN('123') //false
isNaN('Hello') //true
isNaN('2005/12/12') //true
isNaN('') //false
isNaN(true) //false
isNaN(undefined) //true
isNaN('NaN') //true
isNaN(NaN) //true
isNaN(0 / 0) //true
isNaN(null) //false

isNaN関数の便利さJavaScriptで可能な他のすべての値とは異なり、等式演算子(==および===)を使用して値をNaNと比較し、値がNaNであるかどうかを判断することはできません。 ==NaNおよびNaN===NaNはfalseと評価されます。isNaN()関数は、NaNに対する便利な同等性チェックを提供します。

于 2021-09-15T13:26:31.353 に答える
3

isNaN()は、そのままNode.jsではサポートされていないようです。
私は一緒に働いた

var value = 1;
if (parseFloat(stringValue)+"" !== "NaN") value = parseFloat(stringValue);
于 2013-05-06T09:05:15.647 に答える
3
NaN === NaN;        // false
Number.NaN === NaN; // false
isNaN(NaN);         // true
isNaN(Number.NaN);  // true

等式演算子(==および===)を使用して、NaNに対して値をテストすることはできません。

Mozillaのドキュメントを見るグローバルなNaNプロパティは、Not-A-Numbeを表す値です。

最良の方法は、NaNをチェックするためのbuit-in関数である'isNaN()'を使用することです。すべてのブラウザがこの方法をサポートしています。

于 2014-11-08T22:18:25.623 に答える
2

IEEE 754によると、NaNに関連するすべての関係は、!=を除いてfalseと評価されます。したがって、たとえば、AまたはB、あるいはその両方がNaNの場合、(A> = B)= falseおよび(A <= B)=falseになります。

于 2014-10-28T20:09:04.637 に答える
2

私はStackOverflowの別の質問にこの回答を書きました。別の質問はいつチェックしますNaN == nullが、重複としてマークされたので、仕事を無駄にしたくありません。

についてのMozillaDeveloperNetworkを見てくださいNaN


短い答え

distance || 0値が適切な数値であることを確認したい場合、またはそれを確認したい場合に使用しisNaN()てください。

長い答え

NaN(Not-a-Number)は、数学演算が失敗したときに頻繁に返されるjavascriptの奇妙なグローバルオブジェクトです。

NaN == null結果がどれかを確認したかったfalse。Hovewerは。でさえNaN == NaN結果を出しfalseます。

変数がであるかどうかを確認する簡単な方法NaNは、グローバル関数isNaN()です。

もう1つはx !== x、xがNaNの場合にのみ当てはまる方法です。(@ raphael-schweikertに思い出させてくれてありがとう)

しかし、なぜ短い答えがうまくいったのですか?

確認してみましょう。

呼び出すとNaN == false、結果はfalse、と同じになりNaN == trueます。

仕様のどこかに、JavaScriptには常にfalse値のレコードがあります。これには次のものが含まれます。

  • NaN--Not-a-Number
  • ""-空の文字列
  • false-ブール値false
  • null-nullオブジェクト
  • undefined-未定義の変数
  • 0-数値0、+0および-0を含む
于 2015-11-30T06:47:16.143 に答える
2

別の解決策は、MDNのparseFloatページに記載されています

厳密な解析を行うためのフィルター機能を提供します

var filterFloat = function (value) {
    if(/^(\-|\+)?([0-9]+(\.[0-9]+)?|Infinity)$/
      .test(value))
      return Number(value);
  return NaN;
}


console.log(filterFloat('421'));               // 421
console.log(filterFloat('-421'));              // -421
console.log(filterFloat('+421'));              // 421
console.log(filterFloat('Infinity'));          // Infinity
console.log(filterFloat('1.61803398875'));     // 1.61803398875
console.log(filterFloat('421e+0'));            // NaN
console.log(filterFloat('421hop'));            // NaN
console.log(filterFloat('hop1.61803398875'));  // NaN

そして、それがisNaNそうであるかどうかを確認するために使用することができますNaN

于 2016-05-04T17:22:36.257 に答える
2

ただ楽しみのために、別の方法を見つけました。

function IsActuallyNaN(obj) {
  return [obj].includes(NaN);  
}
于 2017-05-19T04:43:00.567 に答える
0

確認する正確な方法は次のとおりです。

//takes care of boolen, undefined and empty

isNaN(x) || typeof(x) ==='boolean' || typeof(x) !=='undefined' || x!=='' ? 'is really a nan' : 'is a number'
于 2016-05-30T04:25:53.087 に答える
0

チャームのように機能するこの小さな関数を作成しました。直感に反しているように見えるNaNをチェックする代わりに、数値をチェックします。私はこの方法でそれを行うのは私が最初ではないと確信していますが、私は共有したいと思いました。

function isNum(val){
    var absVal = Math.abs(val);
    var retval = false;
    if((absVal-absVal) == 0){
        retval = true
    }

    return retval;
}
于 2016-06-05T20:14:33.667 に答える
0

markyzmの答えはうまく機能しますがInfinity、Infinityは技術的には数値ではないため、falseは返されません。

isNumber数字かどうかをチェックする関数を思いついた。

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"));

更新:このコードが一部のパラメーターで失敗することに気付いたので、改善しました。

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));

于 2017-06-09T01:11:00.487 に答える
0
alert("1234567890.".indexOf(String.fromCharCode(mycharacter))>-1);

これはエレガントではありません。しかし、isNAN()を試した後、別の代替手段であるこのソリューションにたどり着きました。この例では、「。」も許可しました。フロートをマスキングしているからです。これを逆にして、数字が使用されていないことを確認することもできます。

("1234567890".indexOf(String.fromCharCode(mycharacter))==-1)

これは1文字の評価ですが、文字列をループして数値をチェックすることもできます。

于 2017-08-16T19:38:10.180 に答える
0
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
于 2021-07-01T20:12:12.083 に答える
-1

結果を文字列に変換し、「NaN」と比較するだけです。

var val = Number("test");
if(String(val) === 'NaN') {
   console.log("true");
}
于 2017-02-23T11:17:07.840 に答える
-1

Is (NaN> = 0)?......「わからない」。

function IsNotNumber( i ){
    if( i >= 0 ){ return false; }
    if( i <= 0 ){ return false; }
    return true;
}

条件は、TRUEの場合にのみ実行されます。

FALSEではありません。

「わからない」ではありません。

于 2017-09-18T21:57:22.180 に答える
-1

だから私はこれに対するいくつかの反応を見ます、

しかし、私はただ使用します:

function isNaN(x){
     return x == x && typeof x == 'number';
}
于 2017-12-18T22:57:38.333 に答える