美文网首页工作生活
JS数据类型和转换

JS数据类型和转换

作者: Nadalism | 来源:发表于2019-06-29 17:15 被阅读0次

    JS数据类型

    先言简意赅,JS一共一共只有7种数据类型,分别是
    Number,String,Boolean,Symbol,null,undefined,Object(对象)
    是的你没看错,null和undefined是数据类型,且这个数据类型只有一个值,就是本身2333

    • Number
      JS里是没有int和float和double的区别的,Number即代表任何数字。
      因为JS内部,所有数字都是以64位浮点数存储,即使整数也如此,所以11.0是相同的,一样样的

    1 === 1.0//true

    由于浮点数不是精确的值,所以设计小数的运算会有一些奇葩的现象

    0.1 + 0.2 === 0.3//false
    0.3 / 0.1 //2.99999999999

    js能表示的数值范围为21024到2-1023

    • String
      String就是一串字符串
      其中字符串分多行打需要格外注意

    var s = '123456
                 7890'//直接报错
    var s = '123456\
                 7890'//可以,但不推荐,因为若反斜杠后面多打了空格,反斜杠会和第一个空格匹配,转义成空格,就不存在哪个反斜杠符号了
    var s = '12345'+
                '67890'//好读的语法,推荐
    若就是想打有多行的字符串呢
    可以用ES6的新语法
    var s = `12345
                67890`
    //打印出来就是12345
                            67890
    //这个语法类似于Python里的``` ```

    • null和undefined的区别
      区别有两点:
    1. 若一个变量没有值——undefined
    2. 有个对象object,现在不想赋值——null var obj = null
      有一个非对象,不想赋值——undefined var n = undefined
    • 对象
      对象有两点需要注意
    1. 要记住:对象即哈希
    var person = {name:"Jack',age:22}
    person.age ===22
    person["age"] ===22
    person[age]//报错!
    

    只有字符串才能做对象的key,js是自动把所有的key都转化成了字符串了
    若我们自己定义的时候不加引号,则key要符合标识符规范,若加了引号可以随意

    delete person.name//删除了key和value
    person.name = undefined//只删除了value

    • Boolean
      就是true和false
    • Symbol
      是ES6的新数据类型,在这里不做讨论

    JS数据类型转换

    数据类型转换一般来说只有三个是有意义的

    1. 其它数据类型转成String
    2. 其它数据类型转成Number
    3. 其它数据类型转成Boolean

    其它数据类型转成String

    1. 调用toString()方法
      但是注意null和undefined调用会报错
    (11).toString()//'11'
    true.toString()//'true'
    null.toString()//报错
    undefined.toString()//报错
    {}.toString//"[object Object]"
    
    1. 调用全局函数String()
      这个函数厉害,null和undefined扔进去也不会报错
    String(11)//'11'
    String(undefined)//'undefined'
    
    1. 最常用的一种:加上一个空字符串
    1 + ''//'1'
    null + ''//'null'
    

    原理其实是加号两边出现了非String类型时,系统会自动地调用String()函数来转化

    其它数据类型转成Number

    1. parseInt和parseFloat
    parseInt("   222   3")//222
    parseFloat("  22.33a  4")//22.33
    

    parseInt和parseFloat强大之处在于从能parse的地方开始parse到不能parse为止

    1. Number()
    Number("  111   ")//111
    Number("  11 aa")//NaN
    

    Number的不足之处就在于字符串里出现非空格和数字的字符时就不好使了,直接返回NaN

      • 0大法
    '1' - 0//1
    
      • 大法
    + '1'//1
    + " 11.23 "/11.23
    

    总结:这4种方法都能自动过滤字符串前后的空格,但只有parseInt和parseFloat能稍微处理奇怪的字符

    其它数据类型转成Boolean

    先记住js里只有5个falsy值:null,0,'',undefined,NaN!!
    任何对象包括{}空对象都是true的!!

    1. Boolean()
    2. !!大法(推荐)
    !!"333"//true
    !!3//true
    !!{}//true
    

    相关文章

      网友评论

        本文标题:JS数据类型和转换

        本文链接:https://www.haomeiwen.com/subject/mswpcctx.html