JavaScriptの
nan(Not-Anumber)が開発者を混乱させることがよくあります。しかし、実際には、NANは単純な異常な値ではなく、無効な数を表すSentry Valueです。数字の不足でもゼロでもありませんが、数値操作にエラーがあることを示す明確な信号です。 (または、私は知りません、私はこの言語を作成する人ではありません)
ナンとは?IEEE 754仕様に由来します。それはバグやエラーではなく、言語で意図的に設計されたものの一部です。ナンを赤い旗と考えることができ、「ねえ、この操作は数学は言えない」と促します。
たとえば:平方根の負の数を計算することはできません(少なくとも実際の範囲内)ので、JavaScriptはNANを返します。これは「幸せは何色ですか?」と尋ねるようなものです。これは意味のない答えです。
<code class="language-javascript">console.log(Math.sqrt(-1)); // NaN</code>
ナンの独特の行動
これはバグではなく、設計されています。 ECMAScriptの仕様によれば、NANは他の値(それ自体を含む)に比べて「無秩序」です。これは、を使用してNANを確認できないことを意味します。 :
を使用する必要があります<code class="language-javascript">console.log(NaN === NaN); // false</code>
なぜナンは数字===
なのか
Number.isNaN()
奇妙なことに、ナンは技術的には
<code class="language-javascript">console.log(Number.isNaN(NaN)); // true console.log(Number.isNaN("Hello")); // false</code>
、または - それらは数字ではないことを返すことは意味がありません。代わりに、JavaScriptはNANを返しますが、これはまだ数字であり、無効な数字だけです。
typeof NaN
例
undefined
数字配列の平均値を計算する関数を構築しているとします。アレイに非数が含まれている場合はどうなりますか? null
-1
これらの奇妙なことはありますが、ナンは依然として強力なツールです。数値操作が失敗した場合、それは唯一の意味のある返品値であり、この言語の使用方法を学ぶ必要があります。
<code class="language-javascript">function calculateAverage(arr) { const sum = arr.reduce((acc, val) => acc + val, 0); return sum / arr.length; } console.log(calculateAverage([1, 2, "three", 4])); // NaN</code>
以上がJavaScript NaN の癖: 欠陥ではなく機能。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。