根据我的理解,NaN
代表Not A Number
。 字符串绝对不是数字,因此我希望以下代码为字符串返回true
。但事实并非如此。
console.log(Number.isNaN("Stack Overflow"));

请有人澄清一下吗?
答案 0 :(得分:5)
isNaN
和console.log('Number.isNaN("Stack Overflow"): '+Number.isNaN("Stack Overflow"));
console.log('isNaN("Stack Overflow"): '+isNaN("Stack Overflow"));
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/isNaN
isNaN()函数确定值是否为NaN。
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN
Number.isNaN()方法确定传递的值是否为NaN,其类型是否为Number。它是原始的全局isNaN()的一个更强大的版本。
你返回false的原因是" Stack Overflow"不是数字,它是一个字符串。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strValidationList As String
Dim strVal As String
Dim lngNum As Long
On Error GoTo Nevermind
strValidationList = Mid(Target.Validation.Formula1, 2)
strVal = Target.Value
lngNum = Application.WorksheetFunction.Match(strVal, Range(strValidationList), 0)
If strVal <> "" And lngNum > 0 Then
Application.EnableEvents = False
Target.Formula = "=INDEX(" & strValidationList & ", " & lngNum & ")"
End If
Nevermind:
Application.EnableEvents = True
End Sub
&#13;
答案 1 :(得分:1)
这不是Number.isNaN。
console.log(isNaN("Stack Overflow"));
答案 2 :(得分:1)
与全局isNaN()函数相比,Number.isNaN()没有 遇到强制将参数转换为数字的问题。 这意味着现在可以安全地传递通常会转换的值 到NaN,但实际上与NaN的值不同。这也意味着 只有类型编号的值,也是NaN,返回true 。
答案 3 :(得分:1)
返回true:
console.log(isNaN("Stack Overflow"));
然后返回false:
console.log(Number.isNaN("Stack Overflow"));
答案 4 :(得分:0)
我必须这样做
Number.isNaN(Number("Stack Overflow")) // returns true
Number.isNaN(Number(false)) // returns false (unfortunately)
Number.isNaN(Number(12)) // returns false
Number.isNaN(Number(12.02)) // returns false
答案 5 :(得分:0)
这看起来很奇怪,但一旦理解 NaN 在此处描述的严格意义上的“非数字”Why does typeof NaN return 'number'?(除以零等),这就是我使用的:
typeof value === "number" && !isNaN(value)
答案 6 :(得分:-1)
试试:
console.log(isNaN("Stack Overflow"));
&#13;
答案 7 :(得分:-3)
根据MDN,非数字值首先被强制转换为数字,然后测试NaN。因此,JS中的空字符串(""
)被认为是假的,因此转换为0,这绝对是一个数字。