美文网首页
JS -- 数据类型转换及相关

JS -- 数据类型转换及相关

作者: MingJiang3 | 来源:发表于2018-08-11 12:13 被阅读0次

    1、任何类型转string:①(推荐)在需要转换的类型加上空字符串,例  1 + "" , "" + null等(单双引号均可)。        ②在需要转换的类型后加点tostring,例  var n = 1   n.tostring( ) , var a = true   a.tostring( )。                                                                                                                               ③在需要转换的类型后放在String( )里,例  windows.String(1) ,windows.String(null)等。               (注:方法②在转换null和undefined时会报错;3种方法在转换object时会显示[object Object])


    2、任何类型转boolean:①把需要转换的类型放在Boolean( )里,例  Boolean(1)  , Boolean(undefined)等。                                                                                                                                            ②(推荐)在需要转换的类型前加两个感叹号,例  !! 1 ,!! { }等。(注:下面5种转为布尔为false。null  undefined  0  NaN  ""(''))


    3、任何类型转number:①把需要转换的类型放在Number( )里,例  Number( '1' )等。                                           ②把需要转换的类型放在parseInt( )里,例  parseInt( '1' , 10 ) ,parseInt( '011' , 8 )等 。                                                                                                                                          ③把需要转换的类型放在parseFloat( )里,例 parseFloat( '1.23' )等小数型。                                                                                                                                                                ④(推荐)把需要转换的类型减零,例  ' 3 ' - 0 ,' 20 ' - 0 等。        ⑤把需要转换的类型前面加一个加号,例  + ' 2 ' , + ' 12 ' 等。


    内存图

    简单数据类型的值存放在栈(stack)中;复杂数据类型的值存放在堆(heap)中,然后在栈中放入对应的地址(引用)。

    示例:

    a = 1 a = {name : " a "} a.name = ' b ' a = {name : ' a '}

    垃圾回收

    如果一个对象没有被引用,会被当做垃圾,将被回收。

    (IE浏览器BUG:当heap中几个对象相互引用,而没有stack引用时,IE不把它们当做垃圾)


    浅拷贝和深拷贝

    基本类型的赋值都是深拷贝;一个对象改变里面元素导致另一对象也跟着变就是浅拷贝。

    深拷贝

    思考题

    fn不是垃圾 a.x 和 a = { n : 2 }的地址引用不一样

    相关文章

      网友评论

          本文标题:JS -- 数据类型转换及相关

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