欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

js数据类型

程序员文章站 2022-07-09 20:57:08
就直接给自己写的代码吧:该写的都写在注释里了 1 //js 数据类型共6种(es5) number,string,boolean,null,undefined,引用数据类型(Array,Object,Function) 2 //Symbol (ES6 新增,表示独一无二的值) 3 var typeA ......
就直接给自己写的代码吧:该写的都写在注释里了
  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的返回值就行了