就直接给自己写的代码吧:该写的都写在注释里了
  1 //js 数据类型共6种(es5)  number,string,boolean,null,undefined,引用数据类型(Array,Object,Function)
  2   //Symbol (ES6 新增,表示独一无二的值)
  3   var typeArr = [
  4     {
  5       type: '数值类型',
  6       value: 251
  7     },
  8     {
  9       type: '字符串类型',
 10       value: 'abcdefg'
 11     },
 12     {
 13       type: '布尔类型',
 14       value: false
 15     },
 16     {
 17       type: '布尔类型',
 18       value: true
 19     },
 20     {
 21       type: 'null类型',
 22       value: null
 23     },
 24     {
 25       type: 'undefined类型',
 26       value: undefined
 27     },
 28     {
 29       type: '引用类型(对象{})',
 30       value: {}
 31     },
 32     {
 33       type: '引用类型(对象{a:2})',
 34       value: { a: 2 }
 35     },
 36     {
 37       type: '引用类型(数组[])',
 38       value: []
 39     },
 40     {
 41       type: '引用类型(数组[1])',
 42       value: [1]
 43     },
 44     {
 45       type: '引用类型(数组[1,2])',
 46       value: [1, 2]
 47     },
 48     {
 49       type: '引用类型(function)',
 50       value: function () { }
 51     }
 52   ]
 53   for (var i = 0; i < typeArr.length; i++) {
 54     console.log(typeArr[i].type + typeArr[i].value + '转化为数值:', Number(typeArr[i].value))
 55     console.log(`${typeArr[i].type}${typeArr[i].value}转化为字符串:`, String(typeArr[i].value))
 56     console.log(`${typeArr[i].type}${typeArr[i].value}转化为布尔值:`, Boolean(typeArr[i].value))
 57     console.log(`${typeArr[i].type}${typeArr[i].value}执行toString:`, typeArr[i].value && typeArr[i].value.toString())
 58     console.log(`${typeArr[i].type}${typeArr[i].value}执行valueOf:`, typeArr[i].value && typeArr[i].value.valueOf())
 59   }
 60   console.log()
 61   // console.log([] + {}) // "[object Object]"
 62   // console.log(Number([])) // "0"
 63   // console.log(String([])) // ""
 64 
 65   //基本数据类型之间转化:
 66   /* 
 67   string转number
 68     1.空字符串或全空字符串   0
 69     2.纯数字字符串或者科学计算法或者进制数表示  得对应的数值
 70     3.其他 NaN
 71   */
 72   console.log(Number('')) // 0
 73   console.log(Number('   ')) // 0
 74   console.log(Number('9527')) // 9527 纯数字字符串
 75   console.log(Number('0x11')) // 17  16进制表示数
 76   console.log(Number('2e2')) // 200 科学计数
 77   console.log(Number('qerw')) // NaN
 78 
 79   /* 
 80   string转Boolean
 81     只有空字符串转为 false
 82     其他全为true
 83   */
 84   console.log(Boolean('')) // false
 85   console.log(Boolean('   ')) // true
 86 
 87   /* 
 88   number转string
 89     1.普通数直接加引号变成字符串
 90     2.表达式表示的数 将转化为实际数后加引号变成字符串
 91   */
 92   console.log(String(0)) // '0'
 93   console.log(String(0x11)) // '17'  
 94   console.log(String(2e2)) // '200' 
 95   console.log(String(2e-2)) // '0.02' 
 96   console.log(String(2 / 3)) // '0.6666666666666666'
 97 
 98   /* 
 99   number转boolean
100     0为false,非0为true
101   */
102   console.log(Boolean(0)) // false
103   console.log(Boolean(1)) // true 
104 
105   /* 
106     boolean转number
107       false 0,true  1
108     */
109   console.log(Number(true)) // 1
110   console.log(Number(false)) // 0
111 
112   /* 
113    undefined 转number,string,boolean
114   */
115   console.log(Number(undefined)) // NaN
116   console.log(String(undefined)) // 'undefined'
117   console.log(Boolean(undefined)) // false
118 
119   /* 
120    null 转number,string,boolean
121   */
122   console.log(Number(null)) // 0
123   console.log(String(null)) // 'null'
124   console.log(Boolean(null)) // false
125 
126   /* 
127     引用数据类型转number
128     1.对象 NaN
129     2.数组 空数组为0,只有一个元素且可以转化为数字的会得到对应的数值,其他的都是NaN
130     3.函数 NaN
131   */
132   console.log(Number({})) // NaN
133   console.log(Number([])) // 0
134   console.log(Number([1])) // 1
135   console.log(Number(['0x11'])) // 17
136   console.log(Number([1, 2])) // NaN
137   console.log(Number([1, 2, 3])) // NaN
138   console.log(Number(function () { })) // NaN
139 
140   /* 
141     引用数据类型转string
142     1.对象 '[object Object]'
143     2.数组 去掉[]和分隔逗号,剩下的内容用引号包起来形成字符串
144     3.函数 整个函数体加引号成为字符串
145   */
146   console.log(String({})) // '[object Object]'
147   console.log(String([])) // ''
148   console.log(String([1])) // '1'
149   console.log(String([1, 2])) // '1,2'
150   console.log(String([1, 2, 3])) // '1,2,3'
151   console.log(String(function () { })) // 'function () { }'
152 
153 
154   /* 
155     引用数据类型转boolean
156     全为true
157   */
158   console.log(Boolean({})) // true
159   console.log(Boolean([])) // true
160   console.log(Boolean(function () { })) // true
161 
162 
163 
164   //js显式类型转换 规律和原理总结
165     // 1.Number()转数值类型的过程:先调用原生方法valueOf,如果返回值是可以转化成数值的基本数据类型,直接返回整个结果,结束。如果返回值是非基本数据类型,根据调用原生方法toString的返回字符串类型转化成最终的数值类型,结束。
166     // 2.String()转字符串类型的过程:先toString方法,返回值。
167     //所以知道原理后,涉及到引用类型这种的,记住这些toString的返回值就行了

版权声明:本文为singerlee-changealive原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/singerlee-changealive/p/11132944.html