zoukankan      html  css  js  c++  java
  • 【JavaScript】标准内置函数 isNaN

    以下内容为学习记录,可以参考 MDN 原文。

    环境

    • node v12.18.1
    • npm 6.14.5
    • vscode 1.46
    • Microsoft Edge 83

    概念

    isNaN() 函数用来确定一个值是否为 NaN。注:isNaN函数内包含一些非常有趣的规则;
    你也可以使用 ECMAScript 2015 中定义的 Number.isNaN() 来判断。
    如果给定值为 NaN 则返回值为 true;否则为 false。

    isNaN 函数的必要性

    与 JavaScript 中其他的值不同,NaN不能通过相等操作符(== 和 ===)来判断,
    因为 NaN == NaN 和 NaN === NaN 都会返回 false。因此,isNaN 就很有必要了。

    NaN 值的产生

    当算术运算返回一个未定义的或无法表示的值时,NaN 就产生了。
    但是,NaN 并不一定用于表示某些值超出表示范围的情况。
    将某些不能强制转换为数值的非数值转换为数值的时候,也会得到 NaN。

    ECMAScript (ES2015)包含 Number.isNaN() 函数。通过 Number.isNaN(x) 来检测变量 x 是否是一个 NaN 将会是一种可靠的做法。然而,在缺少 Number.isNaN 函数的情况下, 通过表达式(x != x) 来检测变量 x 是否是 NaN 会更加可靠。

    一个 isNaN 的 polyfill 可以理解为(这个 polyfill 利用了 NaN 自身永不相等于自身这一特征 ):

    var isNaN = function(value) {
        var n = Number(value);
        return n !== n;
    };
    

    示例

    isNaN(NaN);       // true
    isNaN(undefined); // true
    isNaN({});        // true
    
    isNaN(true);      // false
    isNaN(null);      // false
    isNaN(37);        // false
    
    // strings
    isNaN("37");      // false: 可以被转换成数值37
    isNaN("37.37");   // false: 可以被转换成数值37.37
    isNaN("37,5");    // true
    isNaN('123ABC');  // true:  parseInt("123ABC")的结果是 123, 但是Number("123ABC")结果是 NaN
    isNaN("");        // false: 空字符串被转换成0
    isNaN(" ");       // false: 包含空格的字符串被转换成0
    
    // dates
    isNaN(new Date());                // false
    isNaN(new Date().toString());     // true
    
    isNaN("blabla")   // true: "blabla"不能转换成数值
                      // 转换成数值失败, 返回NaN
    
  • 相关阅读:
    数据公钥加密和认证中的私钥公钥
    hibernate数据的三种状态
    寄存器和立即数和内存单元
    三条总线作用
    liunx安装redis和gcc
    Python遍历列表
    String.split()分割字符串方法
    Jmeter教程 录制脚本
    Jemeter压力测试
    Jmeter性能测试
  • 原文地址:https://www.cnblogs.com/jiangbo44/p/13424004.html
Copyright © 2011-2022 走看看