• 浅析Javascript中的“NaN”



        最近公司新项目要大量使用JS,意味着我又要回头恶补JS了。其实在一般项目中我还是挺喜欢写JS,丰富的JS框架(如Jquery、ExtJS)都能很好的提高开发效率, 提升用户体验,但是最根本的JS基础还是要打牢,不能舍本取末。

    Javascript中有6种数据类型:

        ● Undefined:未定义,派生自Null。该类型只有一个值“undefined” ,在使用var声明变量但是没有对其初始化时,它的值就是undefined。
        ● Null:只有一个值"null",使用“typeof”操作符时会返回“object”,建议在声明变量时如果没有其他初始化值就将其定义为null
        ● Boolean
        ● String
        ● Number:数值型。“NaN”就隶属于数值型
        ● Object:数据和功能的集合。

        基本的概念有了,下面就开始进入主题NaN:非数值(Not a Number),用于表示一个本来要返回数值的操作数未返回数值的情况。有些拗口哈,举个例子,在其他程序语言中,任何数值除以0都会出错,从而停止代码执行,但是在JS中则返回“NaN”,代码继续执行,而不会抛错。

        那一般什么情况是属于上面的定义产生NaN呢?主要是在数值转换时产生。数值转换有3个函数:Number()、parseInt()、parseFloat()。后两者只能转换字符串,第一个则可转换任意数据类型。Number()转换函数中如果是Boolean则返回0、1,Null和空字符串返回0,返回NaN的情况如下:

        ● 传入的数据是Undefined类型
        ● 传入的字符串“1323”“1.0”“.2”“0xaf”这类纯数字字符串,如“Hans”“a3”“2b”“q2w”

    对于parseInt()、parseFloat()这两个函数产生NaN的情况:

        ● 传入空字符串及null
        ● 传入非十进制格式的字符串,但没有指定进制基数作为第二个参数,或指定的不正确,如parseInt(“3af”,10)
        ● 传入非纯数字字符串,且第一位不是数字。函数会从字符串第一个字符(位置0)开始解析,直到遇到非数字字符。“34a”会解析为34,“1.1.5”返回1.1,“e546”则返回NaN

     NaN有这样几个特点:

        ● 任何涉及NaN的操作都会返回NaN,如 6 % NaN;
        ● NaN与任何数值都不相等包括自身,如 alert(NaN != NaN)返回True。
        ● 布尔操作时,返回False。alert(!NaN) 返回True

        到这里就再说说一个相关的函数 isNaN():接受任意参数值后,会尝试将这个值转为数值(类似number),再测试返回值。这个函数一般用来验证某个参数是否为数字,false则是数字,true则不是数值,如“3a”就不是。

        关于NaN的就写到这里了,JS可以说它容易也可以说它复杂,一个人可以快速的上手,但是要精通它就得付出大量的精力和时间。

  • 相关阅读:
    Linux客户/服务器程序设计范式——阿帕奇服务器(多进程)
    Linux客户/服务器程序设计范式2——并发服务器(进程池)
    封装readn
    C++学习之路: 函数适配器
    C++学习之路: 智能指针入门
    C++学习之路: 单例模板
    C++学习之路: 左值&右值 的讨论 和 ”move“ 值传递方式
    C++学习之路: 特殊操作符->的重载
    C++学习之路: 模板函数
    C++学习之路: 时间戳 封装成类
  • 原文地址:https://www.cnblogs.com/Hans2Rose/p/jsNaN.html
Copyright © 2020-2023  润新知