JavaScript 中 Number 对象的 NaN 属性是什么?
在 JavaScript 中,NaN 属性是一个表示“非数字”的特殊值。它是 Number 对象的一个属性,可以使用 Number.NaN 访问。
NaN 属性通常是由于无法产生有意义结果的操作而产生的。例如,将 0 除以 0 或尝试解析无效数字都会产生 NaN。
以下是一些会产生 NaN 的操作示例:
Math.sqrt(-1); // NaN 0/0; // NaN parseInt("foo"); // NaN
需要注意的是,NaN 不等于任何值,包括自身。因此,如果要检查一个值是否为 NaN,不能使用 == 或 === 运算符。而应该使用isNaN() 函数,该函数专门用于此目的。
以下是如何使用 isNaN() 的示例:
if (isNaN(someValue)) { console.log("someValue is Not a Number"); }
语法
以下是表示非数字的语法:
NaN Number.NaN
我们可以从 Number 对象调用 NaN,因此即使 NaN 表示非数字,但它也是 Number 对象的一个属性。
有时严格要求为某个操作传递一个数字,在这种情况下,我们可以抛出一个 NaN 错误,以向用户显示他们只能输入数字值。
示例
您可以尝试运行以下示例,以了解如何使用 NaN:
<html> <head> <script> function showValue() { var dayOfMonth = 50; if (dayOfMonth < 1 || dayOfMonth > 31) { dayOfMonth = Number.NaN alert("Day of Month must be between 1 and 31.") } Document.write("Value of dayOfMonth : " + dayOfMonth ); } </script> </head> <body> <p>Click the following to see the result:</p> <form> <input type="button" value="Click Me" onclick="showValue();" /> </form> </body> </html>
示例
让我们创建一个函数 sum,它接收两个参数并将它们转换为整数,以便如果用户以十进制或字符串形式输入数字,它将自动将其更改为整数并对这些整数求和并打印值。然后,我们将通过传递一些参数来调用该函数。
<html> <body> <h2> NaN property of a Number object in JavaScript </h2> <div id = "output"> </div> <script> function sum(a, b) { x = parseInt(a); y = parseInt(b); result = x + y; return result; } let outputDiv = document.getElementById("output"); outputDiv.innerHTML += "Sum of 2 and 4.0 = " + sum(2, 4.0) + "<br>"; outputDiv.innerHTML += "Sum of 2 and 4 = " + sum("2", 4) + "<br>"; outputDiv.innerHTML += "Sum of Two and 4 = " + sum("Two", 4) + "<br>"; </script> </body> </html>
在这里,当我们传递整数或包含整数的字符串或十进制值的整数时,我们将得到相同的结果,因为所有值都可以在整数中解析并且可以是有效数字,但是当我们传递字母字符串时,我们将得到错误 NaN,这意味着我们传递的值不是数字。
示例
让我们修改上述函数,我们希望此函数不允许十进制或字符串中的整数,如果函数获得的值严格不是数字类型,那么我们将控制台记录 NaN 以显示一条消息,表明输入的数字不是数字。
<html> <body> <script> function sum(a, b) { if (typeof (a) === "number" && typeof (b) === "number") { document.write(a + b); } else { document.write(NaN); } } sum("2", 4); </script> </body> </html>
如果 JavaScript 能够将数字从一种形式转换为另一种形式,只要它属于数字类别,它就无法将它们转换为另一种所需的形式,即输入的数字在 JavaScript 中不是数字类型,因此 JavaScript 返回错误 NaN,表示不是数字。酷的是,NaN 也是 Number 的一个对象,我们可以使用Number.NaN 属性访问它。我们还可以通过使用Number.NaN 属性或直接传递 NaN 来手动抛出 NaN 错误。