当我们抛出TypeErrors时,为什么我们需要NaN值?

Web*_*ner 5 javascript language-agnostic nan typeerror

为什么编程语言NaN有价值?

Math.floor('string');  //--> NaN
Run Code Online (Sandbox Code Playgroud)

为什么不抛出TypeError?

TypeError: Expected number instead of string
Run Code Online (Sandbox Code Playgroud)

这个问题被标记为因为JavaScript是我主要熟悉的语言,但我知道这也适用于其他语言.

Den*_*ret 4

在类型语言中,即使没有数字,也必须将数字放入数字变量中。你输入NaN(这就是 JavaScript 中的原因typeof NaN"number"。这就像null你没有更好的对象引用时一样。

而破坏指令流程的异常并不是每个人都那么受欢迎。有些人可能会认为它们应该用于特殊情况,而不是字符串不能解析为数字的简单事实。

请注意,NaN也可能是数学运算的结果,当无法决定结果应该是什么时发生(例如0 * Infinity)。使用 NaN 处理这个问题比在所有操作中包含分支更简单。