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

2018-08-11  本文已影响0人  MingJiang3

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 }的地址引用不一样
上一篇下一篇

猜你喜欢

热点阅读