普通类型和对象的区别

1 其他类型变字符串

方法一:String( )函数(这是一个全局函数)

window.String(null) //  'null'
window.String({}) // '[object Object]'

方法二:x + " "(与空字符串相加)

1 + '' // "1"
true + '' //  "true"
null + '' //  "null"
2 其他类型变布尔

方法一:Boolean( )函数(全局函数)

Boolean(0) // false
Boolean('') // false
Boolean({}) // true(对象全部都是true 包括数组和函数)

五个falsely值:

  • number里:0 NaN
  • string里 :'' "" (空字符串)
  • undefined
  • null

方法二:连续取两次反

!!{}   //  true
!!NaN  // false
!!'!'  //   true
3 其他类型转数字

方法一:函数

Number('1') === 1
parseInt('1',10) === 1
parseFloat('1.23') === 1.23

方法二:

'1' - 0 === 1   // 减0
+ '1.23' === 1.23  // 取正
+ '-1' === -1  

parse:解析

parseInt('s')   // NaN
parseInt('12s')  //  12  (从头开始能解析多少解析多少)
parseInt('011')  // 11
parseInt('011',8)  // 9 (八进制)
parseInt('011',10)  // 11
4 其他类型变对象

内存图:

ktwYQO.md.png

先经过变量提升var a,b,c,d........

  • 简单类型存入Stack
  • 复杂类型存入Heap ,地址存入Stack

面试题:

var a={name:'a'}
b=a
b={'name':'b'}
a.name   //  'a'

ktw7lT.md.png

垃圾回收:
如果一个对象没有被引用,它就是垃圾,将被回收
var a={name:'a'}
var b={name:'b'}
a=b

kt0pp6.md.png

你可能感兴趣的:(普通类型和对象的区别)