美文网首页
JS的类型转换

JS的类型转换

作者: 雷神的铁粉 | 来源:发表于2019-01-09 22:48 被阅读0次

    String()

    使用String函数,可以将任意类型的值转化成字符串。

    数值:转为相应的字符串。
    字符串:转换后还是原来的值。
    布尔值:true转为"true",false转为"false"。
    undefined:转为"undefined"。
    null:转为"null"。

    String(123) // "123"
    String('abc') // "abc"
    String(true) // "true"
    String(undefined) // "undefined"
    String(null) // "null"
    

    toString,可以改变转换成字符串时的返回值
    toString可以用来转number和boolean,null和undefined就报错,object转化为''[object Object]''
    转化为字符串的方式:

    • String()
    • .toString
    • 与 ' ' 相加,
    null + ' '==='null'
    undefined + ' ' ==='undefined'
    

    Boolean()

    使用Boolean函数,可以将任意类型的变量转为布尔值。
    除了这六个值(五个falsy值和false)被转为false,其他值都视为true。

    undefined , null , false , 0 , NaN , 空字符串''

    Boolean(undefined) // false
    Boolean(null) // false
    Boolean(0) // false
    Boolean(NaN) // false
    Boolean('') // false
    Boolean({}) // true
    Boolean([]) // true
    Boolean(new Boolean(false)) // true
    

    转化布尔值的方式:

    • boolean()
    • 前面加 !!
    !!  {}  //true
    !!   null //false
    

    ToString

    ToString 主要负责处理非字符串类型转换为字符串类型。我们将待转换的类型进行划分:
    基本类型和对象类型

    string 类型是 JS 中很特殊,也是最重要的基本类型,基本每个内置对象都实现了自身的 toString 方法。

    基本类型值的操作很常规,都遵循着通用的规则。

    null -> 'null'
    undefined -> 'undefined'
    true -> 'true'
    21 -> '21'
    

    将数字转换为字符串

    全局方法 String() 可以将数字转换为字符串。
    该方法可用于任何类型的数字,字母,变量,表达式:

    String(x) // 将变量 x 转换为字符串并返回`
    
    String(123) // 将数字 123 转换为字符串并返回`
    
    String(100 + 23) // 将数字表达式转换为字符串并返回`
    

    Number 方法 toString() 也是有同样的效果。

    x.toString()
    
    (123).toString()
    
    (100 + 23).toString()
    

    将布尔值转换为字符串

    全局方法 String() 可以将布尔值转换为字符串。
    
    String(false) // 返回 "false"
    
    String(true) // 返回 "true"
    
    Boolean 方法 toString() 也有相同的效果。
    
    false.toString() // 返回 "false"
    
    true.toString() // 返回 "true"
    

    任意类型转数字

    1.  Number(x)
    2.  parseInt(x, 10) 
    3.  parseFloat(x) 
    4.  x - 0
    5.  +x
    

    深复制是什么?

    var a = 1
    var b = a
    b = 2 //这个时候改变 b
    a 完全不受 b 的影响
    那么我们就说这是一个深复制
    

    对于简单类型的数据来说,赋值就是深拷贝。
    对于复杂类型的数据(对象)来说,才要区分浅拷贝和深拷贝。

    这是一个浅拷贝的例子

    var a = {name: 'frank'}
    var b = a
    b.name = 'b'
    a.name === 'b' // true
    因为我们对 b 操作后,a 也变了
    

    什么是深拷贝了,就是对 Heap 内存进行完全的拷贝。

    var a = {name: 'frank'}
    var b = deepClone(a) // deepClone 还不知道怎么实现
    b.name = 'b'
    a.name === 'a' // true
    

    相关文章

      网友评论

          本文标题:JS的类型转换

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