• 关于NaN


    1. NaN

    NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用未返回数值的情况(这样就不会抛出错误了)。例如,在其他编程语言从而停止代码执行。但在 ECMAScript中,任何数值除以 0会返回 NaN①,因此不会影响其他代码的执行。

    NaN 本身有两个非同寻常的特点。首先,任何涉及 NaN 的操作个特点在多步计算中有可能导致问题。其次,NaN 与任何值都不相等,包括 NaN 本身。例如,下面的代

    码会返回 false

    alert(NaN == NaN); //false

    针对 NaN 的这两个特点,ECMAScript 定义了 isNaN()函数。这个函数接受一个参数,该参数可以是任何类型,而函数会帮我们确定这个参数是否“不是数值”。isNAN()在接收到一个值之后,会尝试

    将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串"10"Boolean 值。而任何不能被转换为数值的值都会导致这个函数返回 true。请看下面的例子

    alert(isNaN(NaN)); //true

    alert(isNaN(10)); //false10 是一个数值)

    alert(isNaN("10")); //false(可以被转换成数值 10

    alert(isNaN("blue")); //true(不能转换成数值)

    alert(isNaN(true)); //false(可以被转换成数值 1

    这个例子测试了 5 个不同的值。测试的第一个值是 NaN 本身,结果当然会返回 true。然后分别测

    试了数值 10 和字符串"10",结果这两个测试都返回了 false,因为前者本身就是数值,而后者可以被

    转换成数值。但是,字符串"blue"不能被转换成数值,因此函数返回了 true。由于 Boolean true

    可以转换成数值 1,因此函数返回 false

    ① 实际上只有 0 除以 0 才会返回 NaN,正数除以 0 返回 Infinity,负数除以 0 返回-Infinity

  • 相关阅读:
    如何编写CMakeLists.txt
    C++11 condition_variable
    TCP/IP 收发数据
    CLion 远程开发和调试C/C++代码
    Python unittest mock 在哪里打patch
    MVCC版本链
    数据无法修改?解密MVCC原理
    MVCC ReadView介绍
    正则表达式备忘(基于JavaScript)
    《C+编程规范 101条规则、准则与最佳实践》笔记
  • 原文地址:https://www.cnblogs.com/lixiaodong86171/p/7553422.html
Copyright © 2020-2023  润新知