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
    
  • 相关阅读:
    百度地图API地理位置和坐标转换
    WebClient 通过get和post请求api
    C#模拟POST提交表单(二)--HttpWebRequest以及HttpWebResponse
    C#模拟POST提交表单(一)--WebClient
    百度外卖接口调试 C#版
    DWZ(JUI) 教程 跨域请求 iframeNavTab
    订餐系统之同步美团商家订单
    订餐系统之同步饿了么商家订单
    外卖订单爬虫(美团,饿了么,百度外卖)
    订餐系统之获取淘宝外卖订单
  • 原文地址:https://www.cnblogs.com/jiangbo44/p/13424004.html
Copyright © 2011-2022 走看看