• 技术文章 >web前端 >js教程

    在JavaScript中有哪些特殊数据类型

    亚连亚连2018-06-20 15:43:02原创1259
    在JavaScript中,有6大数据类型,分别包括string,number,boolean,undefined,null 和 object。下面通过通过本文给大家介绍JavaScript中的特殊数据类型,需要的朋友参考下吧

    在JavaScript中,有6大数据类型,分别包括string,number,boolean,undefined,null 和 object

    一、JS中的特殊类型:NaN

    NaN 即Not a Number , 不是一个数字, 那么NaN到底是什么呢? 而对于JS来说,整数和浮点数都统称为number 类型,除此之外,number 类型还有一个很特殊的值,即NaN,它是用来表示是否属于number 类型的一种状态,而不是一个确切的值(所以,NaN不等于自身)。

    那么,NaN值一般会在什么情况下出现呢?

    一般有两种情况:

    (1) 一个表达式中如果有 减号(-)、乘号(*) 或 除号(/) 等运算符 时,JS引擎会在计算之前试图将运算符两边的变量转化为number类型(使用Number(x)做转化),如果转化失败,表达式将返回NaN;有 加号(+)运算符 不会将其两边的变量转化为number类型,这是因为JS表达式的执行顺序是按照运算符的优先级从左到右依次进行的,如果加号(+) 两边的变量都是number类型时,才会做数字相加运算,如果其中有一个变量是字符串,则会将两边都作为字符串相加,如: 5+4+"6"="96"

    (2) 直接使用 parseInt,parseFloat 或 Number 将一个非数字的值转化为数字时,表达式返回 NaN

    "abc" - 3  // NaN
    parseInt( "abc" ) // NaN
    parseFloat( "abc" ) //NaN
    Number( "abc" )  //NaN

    对于数字+字符的值,其转化结果会有所不同:

    Number( "123abc" ); //NaN
    parseInt( "123abc" ); //123
    parseInt( "123abc45" ); //123
    parseFloat( "123.45abc" ); //123.45

    这是因为Number转化的整个值,而不是部分值,parseInt 和 parseFloat 只转化第一个无效字符之前的字符串。

    因此,当一个字符串不能被Number,parseInt,parseFloat成功转换时,就返回NaN,表示该字符串无法被识别为数字类型,这是一个异常状态,并不是一个确切的值。

    所以 NaN != NaN , 因为它是一个异常状态,而不是一个确切的值。

    另外,与NaN相关的还有一个函数,即 isNaN() , 它的作用是检查一个字符串是否能被 Number() 成功转换,即强制转化整个字符串。

    isNaN( "123" )  //false 能转换
    isNaN( "abc" )  //true 不能转换
    isNaN( "123abc" )  //true 部分可转换,但整体不能转换
    isNaN( "123.45abc" ) //true 部分可转换,但整体不能转换

    二、JS中还有另外两个特殊类型:undeinfed 和 null

    undefined 是JavaScript 6种数据类型中的一种,该类型只有一个值,也就是undefined。 undefined意为`未定义`,即当使用var声明了变量但未进行赋值时,这个变量的值就是undefined,其产生的原因有两种:

    (1)访问对象不存在的属性或方法

    (2)声明了变量但从未赋值

    var v1,obj = {};
    console.log(v1); //undefined
    console.log(obj. get ); //undefined
    typeof v1; // "undefined"
    typeof v2; // "undefined"
    typeof obj. get ; // "undefine"
    typeof obj ; // "object"

    和NaN不同的是,undefined虽然也代表变量的一个状态,但这个状态值是确定唯一的,即当一个变量声明了但没有赋值时,它的状态就是undefined ,因此下面表达式是成立的:

    var b;
    b == undefined; //true

    理解了undefined 以后,再理解null 就容易多了,null类型也只有一个值:null , 表示一个变量中没有包含有效数据。null在这里意为空值、空对象的意思,更确切的说,一个被赋值为null的变量没有保存有效的数值、字符串、布尔、数组或对象等,可以通过给一个变量赋值为null来清空变量中的内容。产生null的原因只有一个:即对一个变量显式的赋值为null 。

    var p = null ;
    console.log(p); //null
    typeof p ; // "object"
    typeof null ; // "object"

    还是和NaN来比较,null 也是一个确定切唯一的状态值,当一个变量被赋值为null时,那么它就和null相等,因此下面表达式也是成立的:

    var obj = null ;
    obj == null ; //true

    另外:

    var  v1 = null;
    var v2;
    console.log(v1 + 1 ); // 1
    console.log(v2 + 1 ); //NaN
    var i = i +1;
    var j = i+ 1;
    console.log(i); // NaN
    console.log(j ); //NaN
    console.log(i == j ); //false

    上面是我整理给大家的,希望今后会对大家有帮助。

    相关文章:

    在node.js中用fs.rename如何实现强制重命名

    使用npm创建vue项目(详细教程)

    在Node.js中调用fs.renameSync出现报错问题?

    在VSCode中如何配置React Native开发环境

    以上就是在JavaScript中有哪些特殊数据类型的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:在微信小程序中如何才能实现左右滑动 下一篇:在微信小程序中如何使用ajax实现请求服务器数据
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• 万字图解JavaScript笔记总结• 如何搞懂虚拟 DOM?看看这篇文章吧!• 深入聊聊Node 异步和事件循环的底层实现和执行机制• 简单介绍JavaScript “原型“与“原型链“• 聊聊Node.js中的进程、线程、协程与并发模型
    1/1

    PHP中文网