1. console.log(true)
2. console.log(!true)
3. var a = 1,b = 2
4. console.log(!!(a + b))
5.
6. var b = new Boolean('false')
7. console.log(b)
8. // b是一个布尔对象 而不是一个值
9. // b是一个包含一个true值的对象 可以将b当为一个盒子
10. // 当作为一个构造函数(带有运算符 new)调用时,
11. // Boolean() 将把它的参数转换成一个布尔值,
12. // 并且返回一个包含该值的 Boolean 对象。
13.
14.
15. // 把一个值装进一个对象的过程叫做 装箱 boxing
16. // 把值从对象中取出来的过程叫 拆箱 unbonxing
17.
18. var a = Boolean('111')
19. console.log(a)
20. // 如果作为一个函数(不带有运算符 new)调用时,
21. // Boolean() 只将把它的参数转换成一个原始的布尔值,
22. // 并且返回这个值。
23. // 如果参数为null、''、NaN、undefined、0、-0、false这些值的时候 则为false 否则为true
24.
25. var me = {}
26. var me2 = new Object()
27. console.log(!!me)
28. console.log(!me2)
29. // 一个空白对象会被认为true
30.
31. me.name = '李全福'
32. me.age = 23
33. me2.name = '王子豪'
34. me2.age = 23
35. console.log(!!me)
36. console.log(!me2)
37.
38. new Boolean(true) //盒子内的值 true
39. new Boolean(false) //盒子内的值 false
40. new Boolean('false') //true
41. new Boolean(0) //false
42. new Boolean(2) //true
43. new Boolean(null) //false
44. new Boolean('') //false
45. new Boolean('liquanfu') //true               
46.
47. if(Boolean(0)){
48.     console.log('能执行吗?') //false
49. }
50.
51. if(new Boolean(0)){
52.     console.log('能执行吗?') //能执行吗?
53. }
54. // 带有false值的一个对象
55.
56. // 不管布尔对象这个盒子里面装的是true还是false
57. // 一个布尔对象都会被认为true 因为布尔对象是一个对象
58. // 布尔对象与布尔值是完全不同的
59. // 如果你在布尔场景下如if()永远不要使用布尔对象
60.
61.
62. var str = true.toString()
63. console.log(str)
64. console.dir(str)
65. // 试图对布尔值(包括数值、字符串)等 调用方法时
66. // 会导致临时装箱 产生新的对象 在这个对象上调用方法
67. // 方法调用完毕 对象即会消失