当前位置: 移动技术网 > IT编程>开发语言>JavaScript > js数据类型

js数据类型

2019年07月04日  | 移动技术网IT编程  | 我要评论
就直接给自己写的代码吧:该写的都写在注释里了
  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的返回值就行了

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网